Python爬取的图片为什么看不了是什么原因,有知道的可以解答一下吗?



所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
(讯飞星火专栏,V3.0版本,2023.10.24)
该回答引用讯飞星火认知大模型,仅提供参考,不保证完全正确
Python爬取的图片为什么看不了的原因可能有以下几点:
针对您提供的代码,我发现了以下问题:
get_alldata函数中,soup = BeautifulSoup(text, features: 'html.parser')这一行缺少了逗号分隔参数。应该修改为soup = BeautifulSoup(text, 'html.parser')。savepath函数中,with open('国漫图片\\'+title1+'.jpg',mode='wb')as fp:这一行中的反斜杠应该改为正斜杠,即/。修改后的代码如下:
import re
import requests
from bs4 import BeautifulSoup
import random
if __name__ == "__main__":
head1 = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Mobi'}
head2 = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WoW64; Trident/7.0; rv:11.0) like Gecko'}
headers = (head1, head2)
head = random.choice(headers)
baseurl = 'https://pic.netbian.com/index.html'
html_url = get_data(baseurl)
get_alldata(html_url)
def get_data(html_url):
"""获取网页源代码"""
for i in range(1, 2):
respon = requests.get(url=html_url, headers=head)
# 解码
respon.encoding = 'gbk'
text = respon.text
return text
def get_alldata(text):
soup = BeautifulSoup(text, 'html.parser')
all_li = soup.find('ul', class_="clearfix")
all_li = str(all_li)
# 找到所有li标签
all_data = re.findall('<li><a href="(?P<link>.*?)".*?title="(?P<title>.*?)">', all_li)
for item in all_data:
link = item[0]
title = item[1]
# 拼接最新的url地址获取高清图片
new_url = 'https://pic.netbian.com/' + link
# 所有高清图片的连接
req = requests.get(url=new_url, headers=head)
req.encoding = 'gbk'
all_html = req.text
soup2 = BeautifulSoup(all_html, 'html.parser')
result = soup2.find_all('div', class_="view") # 获取图片所在位置
result = str(result)
all_Jpg = re.findall('(.*?)"', result)
for it in all_Jpg:
all_Hdjpg = it[0]
title1 = it[1]
savepath(all_Hdjpg, title1)
# 保存图片
def savepath(all_Hdjpg, title1):
# 拼接一下高清图片jpg地址
all_ling = 'https://pic.netbian.com/' + all_Hdjpg
img_res = requests.get(url=all_ling, headers=head)
with open('/国漫图片/' + title1 + '.jpg', mode='wb') as fp: # 以二进制写入图片
print('正在保存:', title1)
fp.write(img_res.content)
请注意,这段代码可能仍然无法正常工作,因为网站结构可能会发生变化。建议您根据实际情况进行调整。