标签:批评 失败 下载 桌面分辨率 桌面 保存 png info www
在去年6月吧,刚转行做爬虫的时候,经常拿图片网还有小说网练手,无意中发现一个壁纸网站叫做娟娟壁纸网,有好多高清壁纸(这不是广告,哈哈)
当时是写了全站爬取的代码。以为自己大工告成的时候,结果刚运行,就发现爬出来的图片不对。
每张图片都是这样,我以为遇到了IP限制,于是使用代理,结果仍然是失败。
难道是请求头做了限制?好,那我全部带上。结果依旧失败。
当时也是忙于找工作,也没静下心来仔细想,今天回过头来继续盘它。
虽然最后巧妙的用了get请求爬取成功,但是还是没搞明白原图反爬的原因。
下面来看一看究竟是怎么回事。
附上链接:http://www.jj20.com/bz/zrfg/ssrh/5565.html
图片url在网站html代码中,我爬取的也是这张图片。
复制图片链接到浏览器访问。
正常,浏览器能加载,爬虫为什么就不能下载。刷新图片,结果图片没了,出现了和爬虫一样的结果。
回到网站,刷新,结果,图片没了,加载不出来。
假设是缓存导致的,清理一下浏览器的cookie和缓存。再次刷新,图片又出来了。
爬虫直接请求链接会失败,具体的反爬策略,我们也不清楚。默认为图片只能在网站上加载,单独访问会失败。
从网站分析图片,网站里可能有下载链接。
生成壁纸,根据分辨率来的,之前网站爬的应该都是原图,点进去看一下。
刷新,还是这张图,可以重复访问。
http://cj.jj20.com/d/cj0.php?p=/up/allimg/611/031213123016/130312123016-0.jpg&w=1536&h=864
这是一个get请求,提交了三个参数p(图片链接),w(宽),h(高),生成一张1536乘864的图片。
(写一个demo,测试了一下)
import requests url = "http://cj.jj20.com/d/cj0.php?p=/up/allimg/611/031213123016/130312123016-0.jpg&w=1536&h=864" res = requests.get(url).content #以二进制字节码保存 with open(‘1.jpg‘,‘wb‘) as f: f.write(res)
(单张图片爬取成功)宽和高都是可以自己改的,看自己桌面分辨率自己改。
本文主要介绍爬取思路,全站爬取代码后续再补充。
对于上面的网站原图反爬,我至今不是特别明白是什么原因,希望了解这方面的大牛,可以留言告知,我会尽快回复。
标签:批评 失败 下载 桌面分辨率 桌面 保存 png info www
原文地址:https://www.cnblogs.com/lyxdw/p/10513967.html