上一期介绍了如何爬取小说,大佬们都觉得技术太简单,而且内容也不够精彩,经过认真反思总结之后,今天双手奉上爬图系列,请各位客官查收。
工欲善其事必先利其器,先介绍本次需要使用的一些工具:
1、Python3.6、BeautifulSoup、urllib、requests,re(正则表达式),这些都是老规矩了
2、神秘嘉宾登场,感谢公司一姐的安利,Postman Interceptor(之后简称PI)插件,在Chorme浏览器访问的地址,都可以在插件中看到请求的接口
那么,演出开始吧!
这次,我们把目光放在了搜狗图片上https://pic.sogou.com/,打开chrome浏览器,在搜狗图片中输入“美女”,看看PI给我们返回了什么?
我们看到PI记录到了2条接口记录,我们直接在postman上请求第一条接口,看看返回了什么?
好像,好像,好像,。。。我们居然直接拿到了图片的地址,通过观察返回的数据,thumbUrl对应的地址应该就是图片的地址了,我们用正则表达式把这些数据拿出来看看 urls = re.findall("thumbUrl(.*?),",str(html), re.S)
哇塞,居然一下子拿到了48条图片地址的数据!
所以针对请求的连接https://pic.sogou.com/pics?query=%C3%C0%C5%AE&mode=1&start=48&reqType=ajax&reqFrom=result&tn=0,我们可以大胆预测,query对应的就是搜索的名字,而start就是搜索库中起始的位置,而每次搜索都可以拿到48个地址。
剩下的就是将这48张图片地址下载到本地保存起来了,这个非常简单用urllib.request.urlretrieve()就能完成。
运行代码,看下效果!
好啦,48张美女图就这样下载下来了。
PS:其实还可以预设需要下载几张图,只需要在爬地址的过程中增加循环,自己计算数量即可,这些基本的操作就不在这里献丑了,如有需要可自行修改代码。 代码保存地址:https://github.com/Jason0306/pc/blob/master/bg_2.py