本帖最后由 user999 于 2022-5-23 21:25 编辑
网址是这个:https://www.dpm.org.cn/lights/royal/p/1.html
路径清晰,网站带宽也足够。
但是,为什么总是随机的在某个图片,就出现错误。
因为需要组合网址,前面都没事,大概到了38张左右,就组合不上了。
下面是我的代码,有什么问题吗?如果有问题,为什么前面不出错,要到后面出错呢?
我观察了一下,如果不限制速度,大概26张左右就不行了。
我现在是随机4-8秒停顿,可以到38张左右。
[Python] 纯文本查看 复制代码 url = 'https://www.dpm.org.cn/lights/royal/p/1.html'
url2 = 'https://www.dpm.org.cn'
pno = 0
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"
}
for no in range(1, 125):
url = f'https://www.dpm.org.cn/lights/royal/p/{no}.html'
r = requests.get(url=url, headers=headers)
r.encoding = r.apparent_encoding
allLink = parsel.Selector(r.text).xpath('//div[@class="list clearfix"]/div')
for scanLink in allLink:
time.sleep(random.randint(4, 8))
title = scanLink.xpath('./h3').get()
title = title.replace("<h3>", "")
title = title.replace("</h3>", "")
picLink = scanLink.xpath('./div/a/@href').get()
piclink_2 = url2 + picLink
picDown = requests.get(url=piclink_2, headers=headers)
picDown.encoding = picDown.apparent_encoding
imgLink = parsel.Selector(picDown.text).xpath('//div[@class="pictureshow"]/img/@src').get()
print(imgLink)
imgDown = requests.get(url=imgLink, headers=headers).content
pno += 1
print(f'------正在保存第{pno}张壁纸{title}----------')
with open('img\\故宫壁纸\\' + title + ".jpeg", mode='wb') as f:
f.write(imgDown) |