python 妹子图下载问题
本帖最后由 fa00x 于 2022-6-8 21:22 编辑import requests
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'
}
for i in range(2800,3482):#1951,5482
for j in range(1,40):
url1 = f'https://www.2meinv.com/article-{i}-{j}.html'
res = requests.get(url=url1, headers=headers)
tree = etree.HTML(res.text)
img_url = tree.xpath('/html/body/div/a/img/@src')
#print(img_url)
url3 = requests.get(url = img_url)
img_name = img_url.split("/")[-1]
s = 'G:/pych2/pic33'
with open(s + "\\" + img_name, "wb") as f:
f.write(url3.content)
print(img_name)
已更新 剩下兄弟们看你们自己的了
下载心得 一段时间就会屏蔽无法下载。多线程屏蔽时间更快。估计是服务器后台有监控。单线程。timeout自己设置一下。
看到这个网站好熟悉{:301_997:} 曦月 发表于 2022-6-5 19:31
看到这个网站好熟悉
大佬别看了。来个解决方案{:1_893:} 本帖最后由 Harold123 于 2022-6-5 21:11 编辑
你的img_url是个列表类型,在xpath那行后面加个就好了
img_url = tree.xpath('/html/body/div/a/img/@src') 支持一下,改天研究一下 fa00x 发表于 2022-6-5 20:00
大佬别看了。来个解决方案
我说一下我写的思路,就是先遍历主题链接,再依次访问,访问主题链接后,再遍历取出里面的每一个图片链接,你是想直接下载,可以直接在取链接的时候就下载图片 这种第一时间直接搜这个库的就可以解决了
num = re.findall('...</a> <a href=".*?">(.*)</a>',num_data)[0]
这样可以取到每一个套图的具体数量,防止 下载不全啊,有的套图数量超过40,你的代码就取不到了 不清楚楼主是否是必须用request.urlretrieve,如果必须用的话那就别继续看我的回答了,纯浪费时间,如果不是我这几天自学的时候看到一个类似的代码,改了改你看能用不,
import requests, bs4, os
os.makedirs('images', exist_ok=True)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0'
}
for i in range(1951,5482):
url = f'https://www.2meinv.com/article-{i}.html'
for j in range(1,40):
url1 = f'https://www.2meinv.com/article-{i}-{j}.html'
res = requests.get(url=url1, headers=headers)
soup = bs4.BeautifulSoup(res.text)
comicElem = soup.findAll('img')
comicElem = comicElem
comicUrl = comicElem['src']
res = requests.get(comicUrl)
res.raise_for_status()
imageFile = open(os.path.join('images', os.path.basename(comicUrl)), 'wb')
for chunk in res.iter_content(100000):
imageFile.write(chunk)
imageFile.close()
嫌慢的话可以看看多线程
原代码来源为《编程快速上手_让繁琐工作自动》 支持友友,早日修复问题