100 行代码爬取

python 爬取视觉中国设计师社团网站

阅读本文需要 5 分钟

如今版权越来越重要了,特别是今年。前几天,在一个的圈子里看到一条消息,有公司专门针对一些图片对不知情使用者索赔,说一句请各位使用图片的时候明确是否侵权。

借此来学习一下 python 如何用 100 行代码爬取视觉中国网站的设计图片并批量下载,今天我们就开始试着爬取一下视觉中国的网站里的图片,所有图片仅做学习,不做商用。

先分析一下网页

输入搜索词 「 世界杯」回车之后,打开调试工具,找到请求,并分析其源代码,发现找不到我们所要的内容,例如图片上的「当端午遇上世界杯」 在网页源代码上并没有找到,由此,这些数据应该是通过 ajax 方式传递的,打开调试工具的 XHR 发现果然有请求的数据,查看其 preview 可以看到是一系列 json 格式的数据,分析这些 json 数据,我们发现我们需要的数据,如图片地址,图片标题。。。都可以从这里面取到。

分析完之后,就开始写代码爬取了

首先爬取网站内容,获取其中 ajax 的 json 数据,这里通过python 的 urllib 库的urlencode()来将 json 格式的参数自动解析为url的字符串形式。

例如当page=1 时 会解析成这个样子,就可以获得ajax请求的完整数据的 url :

获取上面的 json 数据后,将 json 数据解析出来,获取其中的 title 和 image 的url地址,并将其保存到本地。同时由于网页的 MD5 加密方式,同时获取其 MD5 值可以保证下载的名称的唯一性。

运行之后,可以看到本地文件中就有了这么多下载好的结果了。

改进一下,将数据存储到 mongodb 数据库中去.。

mongodb 是一个适合进行文档存储的非关系型数据库,所有这里将图片信息通过 mongodb 存储.

设置 Mongodb 配置信息

存入mongodb 中,我们可以存储多一点信息,例如图片的作者,创作时间,主题。。。。暂时根据需求为了方便就只获取这么多信息,图片的 url 地址当然不能少。由此改写一下获取的数据。

最后用过 insert()将获得的字典形式的数据存入数据库就完成了,如有需要直接从数据库中取出需要的数据进行下载,以免都存在硬盘中占用资源.

运行之后,打开mongodb客户端,可以看到所有数据已经存到数据库里了。

以上就是通过分析 ajax 爬取网页的过程,如有不足或疏漏,欢迎指教。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180713G121FY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券