python爬虫爬取桌面壁纸

目标美图网站:http://www.weather.com.cn/weather/101210701.shtml
(有彩蛋)

爬虫的基本思路:

1.首先发送请求并返回requests(最好模拟谷歌浏览器的头部访问(即下面的headers),并且设置一个每次访问的间隔时间,这样就不容易触发网站的反爬机制(说白了就是模拟人类的访问行为))
2.获得requests对象后使用BeautifulSoup (美丽的汤??也不知道为啥要起这个名)来解析requests对象,注意这里要用request.text,就取文本,解析后的soup打印出来其实就是整个html的字符串内容,但是类型并不是string,应该是bs4类型,这就是这个美丽的汤的魅力所在,它可以直接在python用类似于ccs选择器那样的方式一层一层的寻找我们要的div内容。
3.搜寻soup对象中我们需要的内容,就是一层一层div找到对应的属性,然后拿取我们需要的内容。(看html或者把之前的soup对象打印出来)
20201121152922168

4.打印或保存文件

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import requests
from bs4 import BeautifulSoup

def getUrl(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
res = requests.get(url, headers=headers,timeout=20)
if res.status_code == 200:
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
name = soup.find('div',class_='ptitle').h1.string
img = soup.find('img',class_='pic-large')
img_url = img['src']
return img_url

def downImage(img_url):
img = requests.get(img_url,stream=True)
name = img_url.split('/')[-1]
with open('./picture/'+name,'wb') as f:
f.write(img.content) #保存图片的方法

for i in range(1,9):
url = 'http://www.win4000.com/wallpaper_detail_54520_'+ str(i) +'.html'
downImage(getUrl(url))

运行结果

20201121153134144