目录
业务需求
需求分析
代码部分
结果分析
总结思路
业务需求
抽取某网站的简历数据进行保存,批量抓取每个简历的rar包。
需求分析
先分析抓取的网站的url地址,分析每个url地址栏上面都有简历模板的url,先抓取到跳转的地址,在从跳转的地址中抽取每个简历详细页中下载地址,再用get方法进行抓取rar的简历包,进行本地化存储。
代码部分
复制代码
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68# -*- coding:UTF-8 -*- #需求爬取简历网站rar文档进行下载。 import requests from lxml import etree #输入一个空列表,将要爬取的网站url放入列表中 urls = [] #循环5次,每次间隔1 for i in range(1,5,1): #从第二个url的地址上面抓取数据,因为 i = i + 1 #优化列表参数,将start后面的变量设置为I,进行变量格式化 url = "https://sc.chinaz.com/jianli/free_{}.html".format(i) #将赋值的url赋值到urls列表中。 urls.append(url) #请求的浏览器标识符 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'} #设置一个空列表,抽取的网站的详情页url放置进去 detail_urls = [] #设置一个空列表,把抽取到标题数字准备放入 jianli_name_list = [] #遍历从简历的主页抓取每个url for url in urls: #get方法抓取网页的源码 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'} #get方法抓取每个网页的内容 response = requests.get(url,headers=headers) #使用content方法加utf8保留下来 content = response.content.decode('utf8') #etree的html方法赋予对象 html = etree.HTML(content) # for i in (0,10,1): #利用xpath标签路径方法,抓取详细的简历详细url标签页到列表中 detail_url = html.xpath('// * [ @ id = "container"]/div[{}]/a/@href'.format(i+1)) #使用xpath标签,抓取简历的标题 jianli_get_name = html.xpath('//*[@id="container"]/div[{}]/p/a/text()'.format(i+1)) jianli_name_list.append(jianli_get_name) detail_urls.append(detail_url) # print("抓取存储简历名字",jianli_name_list) # print("抓取到存储简历的url列表", detail_urls) #设置一个空列表,准备存放电影数据 jianli_download_url = [] for page in detail_urls: for url in page: response = requests.get(url,headers=headers) content = response.content.decode('utf8') # print(content) html = etree.HTML(content) new_url = html.xpath('// *[ @ id = "down"] / div[2] / ul / li[1] / a/@href')#//*[@id="down"]/div[2]/ul/li[1]/a jianli_download_url.append(new_url) #打印下载地址 # print('名称与简历下载地址:',jianli_download_url) #列表有嵌套,第一次抽取 for r1 in jianli_download_url: #第二次抽取列表出来地址是正确地址 for r2 in r1: rar_pake = requests.get(url=r2, headers=headers).content rar_name = r2.split('/')[-1] #本地化存储数据 rar_Path = './rar_file/' + rar_name with open(rar_Path,'wb') as code: code.write(rar_pake) print(rar_Path,'执行下载完毕!!!')
结果分析
运行结果正常,每个数据包进行下载。
文件夹中有文件下载存入了。
总结思路
本实验最大的难点是抓取每个简历的url,并且将每个简历的rar进行本地化保存。抓取每个简历使用for循环进行遍历抓取了,刚开始抓取不到地址,后面用chrome浏览器自带的xpath路径复制进行抓取,最终抓下来每个简历的详细地址了。最后是注意一点,使用for循环抓取的数据增加到列表中,形成双重列表,要在后面使用两次for循环进行‘http****’数据进行清洗,清洗完毕以后在用get方法进行抓取,用get方法抓取时候,注意url数据的格式有时候使用xpath方法抓取不到标题,就往前面的数据集进行抓取。
最后
以上就是平淡柠檬最近收集整理的关于Python使用lxml模块抓取数据业务需求需求分析代码部分结果分析 总结思路的全部内容,更多相关Python使用lxml模块抓取数据业务需求需求分析代码部分结果分析 总结思路内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复