前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

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~~

有不懂的地方也可以私信我或者评论


本文转载:CSDN博客