网页爬虫抓取百度图片(要求:爬取30张百度图片中关晓彤的照片!! )
优采云 发布时间: 2022-01-29 22:11网页爬虫抓取百度图片(要求:爬取30张百度图片中关晓彤的照片!!
)
要求:在百度图片中抓取关晓彤的30张照片! ! !首先,遵循一个爬虫的大致开发流程:
(1)分析网页:由于网页的源代码太复杂,想要找到我们想要的太难了,所以随便找一张图片的url,操作是如下:
然后,查看网页的源码,ctrl+f搜索刚刚找到的图片的url,会找到三个,我们以第一个为例:
#观察前面有一个thumbURL,我们在这个源码中搜索:
如你所见,我们只需要借用 thumbURL 来使用正则表达式来匹配每张图片的 url。 (2)代码编写:
#1.找目标数据
#2.分析请求流程 (1)每个关晓彤照片就是一个url (2)拿到这些url (3)会发现有30个thumbURL 这就刚好对应30个关晓彤照片的url(这些都在page_url里)
import urllib3
import re
import os
http = urllib3.PoolManager()
# 第一部分:获取包含这些图片的网页的代码
page_url = "https://image.baidu.com/search/index?ct=201326592&cl=2&st=-1&lm=-1&nc=1&ie=utf-8&tn=baiduimage&ipn=r&rps=1&pv=&fm=rs1&word=%E5%85%B3%E6%99%93%E5%BD%A4%E7%8E%8B%E7%89%8C%E7%BE%8E%E8%85%BF&oriquery=%E5%85%B3%E6%99%93%E5%BD%A4%E6%9C%80%E7%BE%8E&ofr=%E5%85%B3%E6%99%93%E5%BD%A4%E6%9C%80%E7%BE%8E&sensitive=0"
res = http.request("GET",page_url)
html = res.data.decode()
# print(html)
# 第二部分:利用正则锁定我们所要爬取的图片的url
img_urls = re.findall('thumbURL":"(.*?)"',html)
print(img_urls)
# 将图片扔到文件夹里
if not os.path.exists("girl_imgs"):
os.mkdir("girl_imgs")
# 遍历对每个图片url发起请求
for index,img_url in enumerate(img_urls):
res=http.request("GET",img_url)
img_data=res.data
filename="girl_imgs/"+str(index)+".jpg"
with open(filename,"wb") as f:
f.write(img_data)
注意:如果不能爬取,会被封禁。发送请求时添加标头。如果只在header中添加user-agent,报错,添加referer(热链)!