这个大图片是在点击之后用 JS 控制加载的。
你可以看看 js/js.js 这个文件,253 行:
function changeImg(){jQuery("#bitImg").attr('src','p/p'+pictID+'/'+indexNum+'.'+jpgPng)
}
其实大图的规律很好找, 下面缩略图列表的 src 可以用 #variContent >li >img 取到,可以在源码中的 107 行找到:
view-source:http://pictogram2.com/?p=2315
缩略图列表地址长这样:
/p/p0997/tn/1.jpg
/p/p0997/tn/2.jpg
/p/p0997/tn/3.jpg
...
如果要获取大图,只要去掉“tn”这一段就可以:
/p/p0997/1.jpg
/p/p0997/2.jpg
/p/p0997/3.jpg
...
然后拼接域名在前面,GET 下来就是大图,比如第一个大图链接:
第一个大图地址
不过,你如果仅仅只是想要抓那个站的全部素材,穷举“p0997”这一段的序号(比如改成“p0098”,这个应该是图集的 ID),并且遍历最后一段的图片序号,扩展名可能是 jpg 也可能是 png,从 1 开始(“1.jpg”,“2.jpg”...)直到返回 404 停止。
思路大概是这么个思路,不过话说回来,你这么爬人家素材真的道德吗?
你好!你的错误原因在于html页面获取到的img标签src属性中的链接,可能是因为src中的url格式是这样的:
<img src="//hao123.com/xxx/xxx/xxx/"></img>这样获取到的链接都没有带上协议:http或者https。而导致程序抛出ValueError的错误异常。
因为正常的url格式应该类似这样的:https://www.baidu.com/
即 协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
参考网页链接
可将代码中第一个for循环中download_links.append修改为:
for pic_tag in soup.find_all('img'):pic_link = pic_tag.get('src')
download_links.append('http:' + pic_link)
python爬图片报错 [Errno 13] Permission denied: 'D:\\python\\test2',是代码输入错误造成的,解决方法如下:
1、首先在网页上抓取图片时open函数有时会报错,如图。
2、然后,根据提示找到错误代码处进行查看,是open函数出了问题。
3、再仔细看这个部分报错的文件名称,发现有个*号,问题就找出来了。
4、使用.replace('*','')将*号替换,就可以了。
5、然后再次运行该代码,最后,图片抓取完成,就不会再报错了。