首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券