Python爬取“开车图”,没时间解释了,赶紧上车!

群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎初学和进阶中的小伙伴入群学习交流

分析

浏览网站的时候,网址格式都为https://lieqishi.com/index.php/fuli/show/id/,文章编号为1~3363(手工试出来的),后期网站增加这个值还会变大。

很多图片需要登录后才能查看,不登录只能看到一张图片。

登录后有些文章有翻页。

有些文章需要消费金币才能查看,这个我就没办法了。(但是猜测有bug,消费一次后,再次查看还需要消费)

使用Fiddler进一步分析

登录的时候是这个url,https://lieqishi.com/index.php/api/ulog/login?username=UserName&userpass=123456,使用GET方法,没有POST数据。

登录之后需要查看的图片是这个网址返回html的,https://lieqishi.com/index.php/fuli/show/pay/,返回的是url加密的数据,需要解密。

可以使用Cookies的方式保持登陆。

利用Chrome的F12查看网页代码,show页面中用#content 下的img标签来定位位置,取得图片的实际href。

pay页面中解密之后,直接用img标签来定位位置,取得图片的实际href。

对于翻页的,取得当前页面下一页按钮(class=‘layui-laypage-next’)中的href是否与本页一致,不一致则表示有下一页。第二页的链接为https://lieqishi.com/index.php/fuli/show/pay//2

实现功能点

实现模拟登录,获取相应的cookies。用于后面的请求。

循环获取所有文章对应的show和pay页面中的img标签的href,做成数组。

用文章编号创建文件夹,把此文章下面的show和pay的img全部下载下来。

随机获取user-agent,模拟不同浏览器浏览。

文件存在则提示下载过,不再下载。

遇到的问题

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

此问题是由于Fiddler开着,会转发,关掉即可。

Max retries exceeded with url

对于打开url获取img增加三次重试功能。

对于下载图片的时候,出现报错等待几秒。

设置requests.get的timeout。

通过浏览器看到的url可能不是你实际要采集的url,一定要用Fiddler分析下。

To-Do-List

为防止被反爬虫

可以多申请几个账号,每次随机登陆某个账号。

文章编号范围可以设的很大,然后连续五个页面没有返回的话,就停止爬取。

.......

但是我不想搞了。:)

此代码仅供参考,有违反什么的话,请告知。

来自:Laycher's Blog

文章著作权归作者所有,如有侵权,请联系小编删除

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171210A0C9HP00?refer=cp_1026

扫码关注云+社区