Hi,本章继续分享爬虫内容。上一章的内容在后续有做了更新,可以将指定的搜索内容一爬到底:https://gitee.com/qinganan_admin/reptile-case.git
欢迎来个⭐
先来看看图
好家伙,如此一来斗图我都能一挑十。
本章分享内容来自每周学习群的小雨同学。
这个小雨同学自学能力还是很强的。好了不夸, 到此为止!
正文!
如何实现?
看了上一篇的朋友应该就不会特别陌生了。
但是吧,唯一不同的是,上一章爬的是文本文字,本章就不一样了,爬的图片。还有就是用的库不一样了
还是老规矩,先看网页布局。
有点HTML基础的,还是很容易辨别的,所以,我们直接在这里获取img中的src就好了。
怎么获取?
这里我们直接用正则,毕竟同学源码就是这么写的。
t='<img src="(.*?)" width="142" height="95" alt="(.*?)"'
result=re.findall(t,response.text)
这样的写法,其实还行吧,意思就是获取全网页的img标签中的src以及alt属性值。
知道了这个,就没啥压力了,我们直接用requests发起请求
url="https://www.doutuwang.com/"
def picture(self):
headers = {
"sec-ch-ua":'.Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103',
"sec-ch-ua-mobile":"?0",
"sec - ch - ua - platform":"Windows",
"User - Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.0.0Safari / 537.36"
}
response = requests.get(self.url, headers=headers) # 请求网页
response.encoding='utf-8'
再回过头来看
result=re.findall(t,response.text)
我们可以直接通过
response = requests.get(self.url, headers=headers).text # 请求网页
这样可以更直观的方便看结果了。写法上都行,没有说好,也没有不好。只是便于理解。
response.encoding='utf-8'
可以写可以不写,如果编码不对直接看源码使用的是什么编码即可。
正常来说,网页使用的utf8编码就不需要再次指定了。
看起来有点像点评代码,别介意!
待学到后面,你还会发现headers里面有些键值对是多余的。
好了,最后看看源码:
import re
import requests
class Picture:
url="https://www.doutuwang.com/"
def picture(self):
headers = {
"sec-ch-ua":'.Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103',
"sec-ch-ua-mobile":"?0",
"sec - ch - ua - platform":"Windows",
"User - Agent": "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 103.0.0.0Safari / 537.36"
}
response = requests.get(self.url, headers=headers) # 请求网页
response.encoding='utf-8'
# BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取项目根目录
t='<img src="(.*?)" width="142" height="95" alt="(.*?)"'
result=re.findall(t,response.text)
for img in result:
if img==result[0]:
continue
res = requests.get(img[0], headers=headers)
print(res.status_code)
s = img[0].split(('.'))[-1]
# with open(BASE_DIR+'/data/picture'+'/' + img[1] + '.' + s, mode='wb') as file:
# file.write(res.content)
with open(r'C:\Users\admin\Pictures\Saved Pictures/2023-2-8/'+ img[1] + '.' + s, mode='wb') as file:
file.write(res.content)
if __name__ == '__main__':
pc=Picture().picture()
记得修改路径!!!