Python爬虫抓取百度搜索图片

本文介绍了如何使用Python爬虫抓取百度图片,通过分析搜索图片的url和返回数据,获取每页图片的链接,并讨论了不同url的特性。代码已更新,支持从命令行输入关键字,能保存高清原图,并提供了运行示例。
摘要由CSDN通过智能技术生成

最近玩机器学习,想搞一个关于识别动漫图片的训练集,苦于没有太多的动漫图片,后来忽然想到百度图片可以拿来用,于是乎写了个简单的爬虫,用来抓取百度图片(关于某个关键字的图片)

第一步,找到搜索图片的url。

打开百度图片网页,搜索“高清动漫”,审查元素,检查network,清空network请求数据,滚动网页到底部,看到它自动加载更多了,然后在network请求里找到关于加载更多数据的url。像是这样http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord=%E9%AB%98%E6%B8%85%E5%8A%A8%E6%BC%AB&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&word=%E4%BA%8C%E6%AC%A1%E5%85%83&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&pn=60&rn=30&gsm=1000000001e&1486375820481=

对比了几个加载更多的url发现,rn参数是每页的显示个数,pn参数是已经请求到的数量。通过修改rn参数及pn参数,观察返回的数据,发现每页最多只能是60,也就是rn最大设置为60.

第二步,分析返回数据。

把上面的url通过浏览器请求,在页面上看到一个超级到的json,分析后发现图片的url是thumbURL middleURL hoverurl这三个属性,搜索一下这三个属性在返回字符串中的数量,发现数量刚好与分页的数量一样。拿这三个url通过浏览器打开,发现thumburl比middleUrl大,与hoverUrl是同一个url。其实还有个objUrl(原图)可以用,不过该url不稳定,有时候会404,有时候会拒绝访问。

然后是码代码

我的python版本是2.7


更新于2017年2月11日
1.保存的图片改为原高清大图 OjbUrl
2.修改使用方法,搜索的关键字可以从命令行输入了
3.随时保存,不再是先搜索所有的图片才保存了。

BaiduImageSearch.py

#coding=utf-8
from urllib import quote
import urllib2 as urllib
import re
import os


class BaiduImage():

    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值