百度网页关键字抓取(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图片文件会保存在文件所在的根目录下。另外,这个爬虫只限于对数据的抓取和保存,对数据的分析留作后续处理。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线