js反编译的代码需要解密之类的,直接给我干蒙圈了,借助selenium可以直接获取到调式工具中的源码,可以获取渲染后的链接,然后将链接交给下载函数(使用异步提高效率)即可。
后续学习完js反编译的话,我会再写一篇教学,介绍js反编译爬取。
主要还是,获取当前页面之后,找到按钮点击下一次,如果下载过程中出现验证码的话,可以加一个判断,使用超级鹰或者是图鉴的python脚本,就可以通过验证了,但是每次验证是需要消耗题分。如果不想花钱的可以找一个训练成功的模型下载使用。
代码:
import time
from selenium import webdriver
import asyncio
import aiofiles
import aiohttp
headers = {
'Referer': 'https://bz.zzzmh.cn/',
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
async def download(href,count):
print(f"第{count}图片开始缓存")
try:
async with aiohttp.ClientSession() as session:
async with session.get(href,headers=headers) as p:
data = await p.read()
async with aiofiles.open(f"D:桌面pythoncode爬虫案例Selenium入门极简壁纸{count}.jpg",'wb') as file:
await file.write(data)
print(f"第{count}图片缓存成功")
except:
print(f"第{count}图片缓存失败")
async def main():
print("选择下载多少页的壁纸")
a = int(input())
web = webdriver.Chrome()
web.get("https://bz.zzzmh.cn/index")
time.sleep(3)
task = []
count = 1
for k in range(a):
img_List=(web.find_elements(by="xpath",value='//div[@class="img-box"]'))
next = web.find_element(by="xpath",value='//div[@class="vue_pagination_group"]/div[@class="vue_pagination_next vue_pagination_item"]')
for i in img_List:
src = i.find_element(by="xpath",value='./span[@class="down-span"]/a')
src= src.get_attribute('href')
print(src)
t = asyncio.create_task(download(src,count))
task.append(t)
count+=1
if k!=a-1:
next.click()
time.sleep(3)
return await asyncio.wait(task)
if __name__=="__main__":
asyncio.run(main())
效果:
原文地址:https://blog.csdn.net/screamn/article/details/134624673
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_22436.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。