爬虫实战练习(三)

爬取4k图片

一、知识点

xpath解析数据

二、思路

  1. 获取网页数据
  2. 解析网页结构
  3. 通过xpath获取目标数据
  4. 处理数据并保存

三、代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 爬取4k图片

import requests
from lxml import etree
import os


def get_url():
url = "http://pic.netbian.com/4kfengjing/"
return url


def get_header():
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
return headers


def run_main():
'''
主要实现代码
:return:
'''
# 1.获取网页数据
response = requests.get(get_url(), get_header())
# 2.将获取的内容转码为gbk
response.encoding = 'gbk'
# 3.将获取的内容加载为html格式
tree = etree.HTML(response.text)
# 4.创建一个文件用来保存图片
if not os.path.exists('./4kfengjing'):
os.mkdir('./4kfengjing')
# 5.通过xpath处理网页数据
li_list = tree.xpath('//div[@class="slist"]/ul/li')
for li in li_list:
# 5.1 获取图片url
img_src = 'http://pic.netbian.com/'+li.xpath('./a/img/@src')[0]
# 5.2 获取图片名称
img_name = li.xpath('./a/b/text()')[0]
# 5.2 根据图片url,请求到图片数据
img_data = requests.get(img_src, get_header()).content
# 5.3 构建图片保存路径
img_path = '4kfengjing/' + img_name + '.jpg'
# 5.4 进行保存
with open(img_path, 'wb') as fp:
fp.write(img_data)
print(img_name + '-----下载成功')


if __name__ == '__main__':
run_main()
------------- End -------------