admin 管理员组文章数量: 887021
python爬取招聘网信息并保存为csv文件
我们以猎聘网为例
一、打开网站查找信息
进入后搜索想要爬取的岗位信息,右键选择 “检查” 进入开发者界面
点击右上角的network,选择doc
然后点击图中的搜索按钮,输入想要爬取的岗位名称,然后刷新页面,选择搜索下边的第二个
这个时候我们看到有我们需要的url,从中也可知网站的请求方式为get请求,我们也得用get请求!
部分代码解析:
1、导入模块
import parsel
import requests
import csv
2、用url放我们的网址
url = 'https://www.liepin/zhaopin/'
3、定义data放我们的参数
这个是网页中payload的参数,也就是url中问号后面的参数
data = {
'inputFrom': 'www_index',
'workYearCode': '0',
'key': 'python',
'scene': 'input',
'ckId': 'kfpt1emhvkrshc9o4h2xquxd74pfihmb',
}
4、用headers放我们的请求头
请求头在网页中Request headers的最后面
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46 '
}
5、用response接收我们发出的请求
网页中用的是get请求,我们也得用get请求
response = requests.get(url=url, headers=headers, params=data)
选择网页中的css
selector = parsel.Selector(response.text)
6、把最大的标签提取出来
lis = selector.css('.left-list-box .job-list-item')
7、以最大的标签为基础,遍历所需要的信息
for li in lis:
title = li.css('.job-title-box div:nth-child(1)::attr(title)').get() # 标题
city = li.css('.job-dq-box .ellipsis-1::text').get() # 城市
money = li.css('.job-detail-header-box .job-salary::text').get() # 薪资
tag_list = li.css('.job-labels-box .labels-tag::text').getall() # 标签
exp = tag_list[0] # 经验要求
edu = tag_list[1] # 学历要求
tag = ','.join(tag_list[2:])
company_name = li.css('pany-name::text').get() # 公司名称
company_list = li.css('pany-tags-box span::text').getall() # 公司标签
company_tag = ','.join(company_list)
href = li.css('.job-detail-box a:nth-child(1)::attr(href)').get() # 详情页
','.join()用逗号把列表里面的元素合并成一个字符串数据
定义一个dit字典存放所需要的信息
dit = {
'标题': title,
'城市': city,
'薪资': money,
'经验要求': exp,
'学历要求': edu,
'职位标签': tag,
'公司名称': company_name,
'公司标签': company_tag,
'详情页': href,
}
8、将获得的数据进行保存
f = open('招聘.csv', mode='a', encoding='utf-8', newline='')
css_write = csv.DictWriter(f, fieldnames=[
'标题',
'城市',
'薪资',
'经验要求',
'学历要求',
'职位标签',
'公司名称',
'公司标签',
'详情页',
])
css_write.writerow(dit) # 写入表头
# 打印在python中显示
print(title, city, money, exp, edu, tag, company_name, company_tag, href)
9、完整代码
import parsel
import requests
import csv
f = open('招聘.csv', mode='a', encoding='utf-8', newline='')
css_write = csv.DictWriter(f, fieldnames=[
'标题',
'城市',
'薪资',
'经验要求',
'学历要求',
'职位标签',
'公司名称',
'公司标签',
'详情页',
])
url = 'https://www.liepin/zhaopin/'
data = {
'inputFrom': 'www_index',
'workYearCode': '0',
'key': 'python',
'scene': 'input',
'ckId': 'kfpt1emhvkrshc9o4h2xquxd74pfihmb',
}
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/99.0.4844.74 Safari/537.36 Edg/99.0.1150.46 '
}
response = requests.get(url=url, headers=headers, params=data)
selector = parsel.Selector(response.text)
# 把最大的标签提取出来
lis = selector.css('.left-list-box .job-list-item')
for li in lis:
title = li.css('.job-title-box div:nth-child(1)::attr(title)').get() # 标题
city = li.css('.job-dq-box .ellipsis-1::text').get() # 城市
money = li.css('.job-detail-header-box .job-salary::text').get() # 薪资
tag_list = li.css('.job-labels-box .labels-tag::text').getall() # 标签
exp = tag_list[0] # 经验要求
edu = tag_list[1] # 学历要求
# ','.join()用逗号把列表里面的元素合并成一个字符串数据
tag = ','.join(tag_list[2:])
company_name = li.css('pany-name::text').get() # 公司名称
company_list = li.css('pany-tags-box span::text').getall() # 公司标签
company_tag = ','.join(company_list)
href = li.css('.job-detail-box a:nth-child(1)::attr(href)').get() # 详情页
dit = {
'标题': title,
'城市': city,
'薪资': money,
'经验要求': exp,
'学历要求': edu,
'职位标签': tag,
'公司名称': company_name,
'公司标签': company_tag,
'详情页': href,
}
css_write.writerow(dit) # 写入表头
# 打印
print(title, city, money, exp, edu, tag, company_name, company_tag, href)
版权声明:本文标题:python爬取招聘网信息并保存为csv文件 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726781571h1027762.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论