Python3批量爬取美女照片并保存到本地(二)
Python3批量爬取美女照片并保存到本地(二)
上一波写错了,很尴尬,就能爬显示的一部分照片,网站有限制,从上波的爬取可以看出来,返回的json中只有一部分图片,其余的需要登录才能下载,我们这次通过爆破路径达到不注册登录批量下载的目的。
直接上代码了,路径1:
目标路径https://www.0xu.cn/gallery/ctmn/1
import requests
import json
import re
import os
number='1'
int(number)
path='qcmn/'
url='https://www.0xu.cn/gallery/'+path+number
html=requests.get(url)
int(number)
html=html.text
# print(number)
#print(html.text)
pattern=re.compile(r'let\sgallery\s=\s(.*)')
find_json=pattern.findall(html)
find_json=str(find_json)
find_json=find_json.replace("'",'').replace(";\\r",'')
#转为字典格式,不然会报错,str格式没法for循环遍历
find_json=json.loads(find_json)
# print(find_json)
# print(type(find_json))
##for循环遍历列表
for pic in find_json:
##取出pictures这一组数据
pic1=pic['pictures']
for pic2 in pic1:
pic_url=pic2['img_url']
print(pic_url)
运行结果:
接下来for循环遍历1-3000路径就OK拉,直接嵌套到循环里就可以了
import requests
import json
import re
import os
lujin=3000
path = 'qcmn/'
for i in range(1,3000):
number =str(i)
int(number)
path=path
url = 'https://www.0xu.cn/gallery/' + path + number
运行结果:
保存到本地的方法还和昨天一样
##for循环遍历列表
for pic in find_json:
##取出pictures这一组数据
pic1 = pic['pictures']
for pic2 in pic1:
pic_url = pic2['img_url']
print(pic_url)
n=n+1
try:
pic = requests.get(pic_url, timeout=10)
local_lujin = './images/'
if not os.path.isdir(local_lujin):
os.makedirs(local_lujin)
with open(local_lujin + '{0}.jpg'.format(str(n)), "wb") as f:
print("正在下载第{0}张照片:".format(str(n)))
f.write(pic.content)
f.close()
except requests.exceptions.ConnectionError:
print('当前图片无法下载')
continue
刚才遍历的1-3000是第四层路径,最后再来个for循环,把第三层路径遍历一波,就几种类型
最终达到批量下载全站图片的目的
最后热爱网络安全和python的小伙伴可以关注下我的公众号。
完整的代码放在公众号了,回复“爬图片1”获得。
作者:那酒不要留
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!知识源于分享!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!