前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取
开发工具
- Python 3.6.5
- Pycharm
import requests
import parsel
import csv
import time
相关模块可用pip命令安装
网页数据分析
如图所示,这些数据都是今天要获取的内容
一、打开开发者工具
可以看网页给我们返回的数据,复制数据,到response里面搜索,看请求网页返回的数据当中是否有需要的数据。
import requests # pip install requests
url = 'https://www.zhipin.com/c100010000/?query=python&page=1&ka=page-1'
headers = {} # headers 复制开发者工具当中的即可
response = requests.get(url=url, params=params, headers=headers)
print(response.text)
二、分析网页数据结构
选择开发者工具中的 Elements
选择箭头 选择网页的数据,会自动跳转到网页标签中,告诉你这个数据是在网页标签里面的哪个位置。
如上图所示,每个企业招聘的数据都在 li 标签里面,我们只需要通过数据解析,提取所需要的数据即可。
import parsel # pip install parsel
response.encoding = response.apparent_encoding
selector = parsel.Selector(response.text)
lis = selector.css('#main .job-list ul li') # 获取所有li标签
'''
通过获取网页中所有li标签,然后循环遍历,再分别提取li标签中所需要的数据
'''
dit = {}
# 创建一个字典接受数据,方便后续保存数据
for li in lis:
title = li.css('.job-name a::attr(title)').get() # 标题
dit['标题'] = title
area = li.css('.job-area::text').get() # 地区
dit['地区'] = area
xz_info = li.css('.red::text').get() # 薪资
dit['薪资'] = xz_info
xl_list = li.css('.job-limit p::text').getall() # 学历经验
xl_str = '|'.join(xl_list)
dit['学历经验'] = xl_str
js_list = li.css('.tags span::text').getall() # 技能要求
js_str = '|'.join(js_list)
dit['技能要求'] = js_str
company = li.css('.company-text .name a::attr(title)').get() # 公司名字
dit['公司名字'] = company
gz_info = li.css('.company-text p::text').getall() # 工作类型
gz_str = '|'.join(gz_info)
dit['工作类型'] = gz_str
fl_info = li.css('.info-desc::text').get() # 福利
dit['福利'] = fl_info
三、数据保存
import csv
# 创建文件
f = open('Boos直聘数据.csv', mode='a', encoding='utf-8-sig', newline='')
# 表头信息
csv_writer = csv.DictWriter(f, fieldnames=['标题', '地区', '薪资', '学历经验', '技能要求', '公司名字', '工作类型', '福利'])
# 写入表头
csv_writer.writeheader()
'''
然后再把之前创建的接受数据的字典,保存即可
'''
csv_writer.writerow(dit) # 写到for循环内
四、多页爬取
'''
https://www.zhipin.com/c100010000/?query=python&page=1&ka=page-1
https://www.zhipin.com/c100010000/?query=python&page=2&ka=page-2
https://www.zhipin.com/c100010000/?query=python&page=3&ka=page-3
'''
每一页的改变都是通过page参数的变化~·
for page in range(1, 10):
url = 'https://www.zhipin.com/c100010000/?query=python&page={}&ka=page-{}'.format(page)
这样就可以实现翻页爬取的效果了!
实现效果
这就是文章以上所有内容了~
喜欢的话,可以点赞哈 O(∩_∩)O~~
有不懂的地方也可以私信我或者评论