百度网页关键字抓取(word=猫(amp=1e点击)(组图))
优采云 发布时间: 2021-11-21 08:14百度网页关键字抓取(word=猫(amp=1e点击)(组图))
小编为985高校小达人,欢迎关注,持续更新~
大家好~
本次推送以百度搜索中的关键字cat作为采集的目标,key为采集,保存猫的图片,以图片形式保存在本地根目录下.
1 准备
在启动本爬虫之前,请确保您已经安装了第三方requests库、BeautifulSoup库等,如果没有安装,请使用cmd打开命令行界面,并逐行输入以下代码:
pip install requests
pip install json
2 爬取分析
这次爬取的信息内容比上一次简单。只需使用requests库向指定的网站发送请求,得到服务器的响应,然后使用json库完成对网页代码的解析,同时进一步防止触发反爬虫机制。具体分析如下:
首先我们这次爬取的网站是
猫&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=猫&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn= 30&rn=30&gsm=1e
右击勾选按钮,或者直接按F12进入开发者界面,点击网络栏,按F5刷新按钮。如有必要,请按 CTRL + F5 组合键完成页面刷新。然后我们点击刷新后出现的第一个子列。如下所示:
这里我们可以看到网站请求的Request URL,然后向下滚动观察Request Headers信息。为了避免触发反爬虫机制,我们应该尽量让爬虫程序更像一个浏览网页的人。
下一步就是提取和保存网页,我们开始今天的爬虫工作。
3 抓取信息并保存
安装完我们开头介绍的第三方库后,我们需要先导入这些文件,才能进行后续的操作。
import requests
import json
3.1 网页请求头设置
为了让爬虫程序更像人工操作,我们在请求过程中加入了一些比较重要的请求头信息,组织成一个请求函数,如下:
def get_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
}
r = requests.get(url,headers = headers)
return r
接下来,我们将开始抓取网页。
3.2 百度图片搜索关键字的猫图片爬取和保存
首先,我们需要抓取单个网页的信息。通过对响应代码的分析,我们使用json库来完成对代码的分析。同时定义为get_pictures_url()函数。详情如下:
def get_pictures_url(url):
r = get_page(url)
soup = json.loads(r.content)
for picture in soup.get('data'):
picture_url = picture.get('thumbURL')
if picture_url:
print(picture_url)
img = get_page(picture_url)
if img.status_code == 200:
try:
with open('./' + picture.get('di') + '.jpg','wb') as f:
f.write(img.content)
except:
pass
采集单个网页的内容后,我们需要获取如何跳转到下一页。这里我们发现通过改变不同页面的URL之间的pageNum参数,可以实现网页之间的切换。
猫&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=猫&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn= 30&rn=30&gsm=1e
猫&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=猫&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn= 30&rn=60&gsm=1e
猫&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=猫&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn= 30&rn=90&gsm=1e
3.3 启动程序
最后键入如下代码即可实现整个程序的运行:
if __name__ == "__main__":
for i in range(10):
print('正在下载{}页'.format(i))
get_pictures_url('https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&' \
'queryWord=猫&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=猫' \
'&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&cg=girl&pn={}&rn=30&gsm=1e'.format(i*30))
print('下载完成')
4 总结与展望
在编写这个爬虫程序的过程中,我们遇到了403 Forbid的尴尬情况,以完善Header请求的头部信息。爬虫程序完成后,.jpg图片文件会保存在文件所在的根目录下。另外,这个爬虫只限于对数据的抓取和保存,对数据的分析留作后续处理。