这是我的报错截图,我能理解这个报错是什么意思,但并不知道怎么解决
#encoding='utf-8'
import requests
import re
from Tools.scripts.objgraph import ignore
url='https://mp.weixin.qq.com/s/1hdWEusrm0MJZexxC_OSaw'
head={"User-Agent": "Mozilla/5.0 "}
def get_text(response):
# 优先使用 chardet 预测的 encoding, 其次使用 http header 提供的 encoding
source_encoding = response.apparent_encoding or response.encoding
if source_encoding is None:
# 说明是二进制文件
raise Exception
elif source_encoding == 'GB2312':
source_encoding = 'GBK'
return response.content.decode(source_encoding, errors="ignore")
response=requests.get(url,headers=head)
html=get_text(response)
with open('E:/Python文件/爬虫/高一新教材/html.txt','w',encoding='utf-8') as f:
f.write(html)
pattern = re.compile(r'<img class=".*?src="(.*?)"', flags=re.S)
image_url=pattern.findall(str(response.content.decode('utf-8')))
del image_url[0]
print(str(image_url))
with open('E:/Python文件/爬虫/高一新教材/image_url.txt','w',encoding='utf-8') as f:
f.write(str(image_url))
for src in image_url:
#将图片转为二进制
image_data=requests.get(url=src,headers=head).content#保存到本地
with open('E:/Python文件/爬虫/高一新教材/新高一教材/{}.jpeg'.format(src[-105:]),'wb') as fp:
fp.write(image_data)
这是我的代码,可能有比较多的问题,我说说我的逻辑思路:
1.向目标网址获取html
2.用正则表达式从html中找到需要的图片的url
3.将图片保存到本地
我的代码之间还插入了一些奇奇怪怪的代码,但影响不大
而我要提的问题是怎么将这些图片批量保存下来?
最后两行我实在看不懂 但是我要给你提个醒 路径前面最好加个r 以防变量捣乱
例:第31行
with open(r'E:/Python文件/爬虫/高一新教材/image_url.txt','w',encoding='utf-8') as f:
结束记得close
取图片链接的后105个字符作为图片名字,其中有Windows规定不允许在文件和文件夹名称中使用的字符,所以你创建文件失败了
图片存到本地的时候名称用数字代替不就行了么,每个图片数字+1