专栏名称: python
隔天更新python文章,我希望用我的努力换来劳动的成果帮助更多的人掌握一门技术,因此我要更加努力。
目录
相关文章推荐
Python爱好者社区  ·  节后第一个私活,赚了3w ·  2 天前  
Python爱好者社区  ·  python接私活,yyds ·  22 小时前  
Python开发者  ·  “李飞飞团队50 美元炼出 ... ·  3 天前  
Python爱好者社区  ·  史上最强!PINN杀疯了 ·  4 天前  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  4 天前  
51好读  ›  专栏  ›  python

Python爬取图片,一言不合就要开车!

python  · 公众号  · Python  · 2017-12-09 23:16

正文

分析

  • 浏览网站的时候,网址格式都为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分析下。







请到「今天看啥」查看全文