#
#author:wuhao
#
#爬取指定页码的图片,如果需要爬取某一类的所有图片,整体框架不变,但需要另作分析
# 可能写的有点乱,因为这是我py写的第一个爬虫程序
思路理一下:适用于所有爬虫,高级点的无非就是在我 以下所说的上面增加了点功能 ,比如代理 、 多线程、 死亡重连 等
思路:
本质上来讲爬虫就是 获取网页 然后解析网页 获取出自己需要的数据 然后对数据进行保存
1.需要解决的就是找到存储 你所需资源的网页 url 【满足一定规律】,因为你不可能没爬去一张网页 手动输一次。
2.找到了url, 你所需要做的就是 以 get | 或 post 的方式获取网页资源,至于 get | post 怎么用,如果你不用框架的话【我建议不要用,因为框架也都是基于 urllib 实现的】,我推荐你去官网上看一下 urllib urllib2 模块,里面的API有详细的使用说明。
3.如果第二步搞定了,说明你已经能够获取网页资源了,那么你所需要的就是解析出资源了。 我一般是用 beautifulsoup 库 和 regex 搭配使用 , beautifulsoup 是需要额外安装的,他功能很强大,可以很快速的解析网页结构。
4.第三步解决的话,你要做的就是存储数据了,因为你爬数据,爬数据,如果不保存也没什么用。 import urllib.request
import urllib.parse
import re
import os
#添加header,其中Referer是必须的,否则会返回403错误,User-Agent是必须的,这样才可以伪装成浏览器进行访问
header=\
{
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
"referer":"https://image.baidu.com"
}
#由于百度图片获取的方式是采用ajax,所以你从正常的url链接只能提取到一个页面显示的图片,也就是前30张(还是前60张)
#具体的分析是:你下拉页面滚动条,分析XHR的变化,就可以找到所需要的Json数据,比如说这个就是分析后找的Json数据
https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E5%BE%AE%E8%B7%9D%E6%91%84%E5%BD%B1&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=%E5%BE%AE%E8%B7%9D%E6%91%84%E5%BD%B1&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=240&rn=30&gsm=b4&1492507141415= #而这个链接中的的 rn 参数指的是一页包含的图片数量,最多60。 pn 指得是第多少张 word 指的是搜索的关键字,其它的一些参数是无关紧要的, 当然你需要把其转码
"https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word={word}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn={pageNum}&rn=30&gsm=1e00000000001e&1490169411926="
#keyword=input("请输入搜索关键字:")
keyword='美女' #转换编码格式
keyword=urllib.parse.quote(keyword,"utf-8") #n作为一个flag,用于条件判断
n=0
#j作为写入图片的识别标志,默认从第0张开始,每写入一张j就+1
j=0
#
error=0 #获取前3000张图片
while(n<30*100):
n+=30
#url链接
url1=url.format(word=keyword,pageNum=str(n)) #获取请求
rep=urllib.request.Request(url1,headers=header)
#打开网页
rep=urllib.request.urlopen(rep)
#读取网页数据
try:
html=rep.read().decode("utf-8")
except:
print("something wrong!")
error=1
print("-------------now page ="+str(n))
if(error==1): continue
#正则匹配,你需要的资源都是在 像这样的里面("thumbURL":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3734503404,179583637&fm=23&gp=0.jpg")
p=re.compile("thumbURL.*?\.jpg")
  
#获取正则匹配结果,返回的是一个list
s=p.findall(html)
#如果不路径存在,创建路径,最后的图片保存在此路径下
if os.path.isdir("f:\\myproject\\MyCrawlPic\\美女")!=True:
os.makedirs(r"f:\\myproject\\MyCrawlPic\\美女")
with open("testPic1.txt","w") as f:
for i in s:
       #获取图片的url
i=i.replace("thumbURL\":\"","")
       #在IDE上显示,打印的结果
print(i)
       #保存图片的URL链接,当然你大可不必多此一举
f.write(i)
f.write("\n")
       #进行写入图片
urllib.request.urlretrieve(i,"f:\\myproject\\MyCrawlPic\\美女\\pic{num}.jpg".format(num=j))
j+=1                                                                                                                                                                              

  

                                                    

python爬虫之爬取百度图片的更多相关文章

  1. 百度图片爬虫-python版-如何爬取百度图片?

    上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...

  2. python爬虫-爬取百度图片

    python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...

  3. Python 爬虫实例(1)—— 爬取百度图片

    爬取百度图片  在Python 2.7上运行 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Author: loveNight import jso ...

  4. python 3 爬取百度图片

    python 3 爬取百度图片 学习了:https://blog.csdn.net/X_JS612/article/details/78149627

  5. [Python爬虫] Selenium爬取新浪微博客户端用户信息、热点话题及评论 (上)

    转载自:http://blog.csdn.net/eastmount/article/details/51231852 一. 文章介绍 源码下载地址:http://download.csdn.net/ ...

  6. Python爬虫之爬取站内所有图片

    title date tags layut Python爬虫之爬取站内所有图片 2018-10-07 Python post 目标是 http://www.5442.com/meinv/ 如需在非li ...

  7. Python爬虫之爬取淘女郎照片示例详解

    这篇文章主要介绍了Python爬虫之爬取淘女郎照片示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 本篇目标 抓取淘宝MM ...

  8. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  9. from appium import webdriver 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium) - 北平吴彦祖 - 博客园 https://www.cnblogs.com/stevenshushu/p ...

随机推荐

  1. 微信小程序icon,text,progress标签的测试

    一:testIconAndTextAndProgress.wxml的代码如下.testIconAndTextAndProgress.js自动生成示例代码 //testIconAndTextAndPro ...

  2. spring 注入使用注解(不用xml)

    (一):导入spring4的jar包 (二):在xml中配置扫描的包 <context:component-scan base-package="entity">< ...

  3. 201521123089 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码1.1 com.parent包中Child.java文件能否编译通过?哪 ...

  4. 201521123045 《Java程序设计》第4周学习总结

    第4周作业-面向对象设计与继承 1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 2. 书面作业 Q1.注释的应用使用类的注释与方法的注释为前面编写的类与方法进行注释,并在Eclip ...

  5. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  6. 201521123044 《Java程序设计》第3周学习总结

    1. 本章学习总结 2. 书面作业 1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...

  7. 201521123018 《Java程序设计》第1周学习总结

    1. 本章学习总结 *Java程序的特点 *可以跨平台运行 *语言简单 *利用控制台运行java程序 *cmd调出控制台->用javac指令编译源代码->用java指令运行 2. 书面作业 ...

  8. 201521123065《java程序设计》第14周学习总结

    1. 本周学习总结 1.大部分情况下使用的数据库是关系型的数据库,使用表存储数据: 2.关系型数据库可以通过唯一的主键查找记录,也可以通过多个信息确定主键: 3.Mysql操作:显示-show dat ...

  9. 201521123019 《java程序设计》 第14周学习总结

    1. 本章学习总结 2. 书面作业 Q1. MySQL数据库基本操作 建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名) 在自己建立的数据库上执行常见SQL语句(截图) ...

  10. scrapy爬虫框架

    downloader:负责下载html页面 spider:负责爬取页面内容,我们需要自己写爬取规则  srapy提供了selector,获取的方式有xpath,css,正则,extract item容 ...