Python爬虫 批量爬取某网站图片

共 2778字,需浏览 6分钟

 ·

2020-09-06 15:21

1.需要用到的库有: 

      Requests    re    os    time 如果没有安装的请自己安装一下,pycharm中打开终端输入命令就可以安装

  2.IDE : pycharm

  3.python 版本: 3.8.1

2.爬取地址:

https://www.vmgirls.com/9384.html

-------------------废话不多说了,不懂的可以给我留言哦,接下来我们一步一步来操作------------------

1.请求网页

copy

1 # 请求网页2 import requests3 4 response=requests.get('https://www.vmgirls.com/9384.html')5 6 print(response.text)

  执行结果:

发现请求到的是403,直接禁止了我们访问,requests库会告诉他我们是python过来的,他知道我们是一个python禁止我们反爬

解决:

  我们可以伪装头,把头设置一下

copy

# 请求网页import requests
headers={ 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'}response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)
print(response.request.headers)

执行结果:

  这样头就伪装了

2.解析网页

copy

# 请求网页import requestsimport re
headers={ 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'}response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)
# print(response.request.headers)# print(response.text)html=response.text#解析网页urls=re.findall('".*?" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" src="(.*?)" data-nclazyload="true">',html)print(urls);

 结果:

可能对re.findall后面不太理解怎么来的,关键就是要找到图片的dom然后根据re库的一个匹配规则来匹配,要匹配的用(.*?)来表示,不需要匹配的用.*?来代替就可以了,

打开网址,按f12查看源码找到图片的代码

 

 复制图片代码,打开网页源码按 ctrl+f 进行搜索,找到图片源码的位置

3.保存图片

  具体可以看源码,我给这些图片创建了一个文件夹(需要os库),并且命了名,这样分类下次看小姐姐就比较容易找到啦

copy

# 请求网页import timeimport requestsimport reimport  osheaders={       'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'}response=requests.get('https://www.vmgirls.com/9384.html',headers=headers)
# print(response.request.headers)# print(response.text)html=response.text
# 解析网页# 目录名字dir_name=re.findall('"(.*?)" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" src=".*?" data-nclazyload="true">',html)[-1]if not os.path.exists(dir_name): os.mkdir(dir_name)urls=re.findall('".*?" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width=".*?" height=".*?" class="alignnone size-full" src="(.*?)" data-nclazyload="true">',html)print(urls);
# 保存图片for url in urls: # 加个延时,避免给服务器造成压力 time.sleep(1) # 图片的名字 file_name=url.split('/')[-1] response = requests.get(url, headers=headers) with open(dir_name+'/'+file_name,'wb') as f: f.write(response.content)

end


欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

万水千山总是情,点个【在看】行不行

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报