前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取了某网2w条招聘信息,看看有什么工作适合你​。​

爬取了某网2w条招聘信息,看看有什么工作适合你​。​

作者头像
Python与Excel之交
发布2021-08-05 11:50:38
3090
发布2021-08-05 11:50:38
举报
文章被收录于专栏:Python与Excel之交

一、前言

又到一年一度的秋招了,受疫情的影响,就业难度大大增加,今天爬取2w前程无忧的招聘信息,看看有什么工作适合你。

前程无忧网址:https://search.51job.com/

本次爬取的信息包括广州,佛山、深圳、珠海、中山这五个城市的招聘信息。

具体链接:

代码语言:javascript
复制
https://search.51job.com/list/030200%252c040000%252c030500%252c030600%252c030700,000000,0000,00,9,99,+,2,1.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=1&dibiaoid=0&line=&welfare=

二、分析网页

按照惯例,先点击下一页,看看链接是否发现变化。点击下一页后发现链接.html前面的1发生了变化。

再鼠标右键查看网页源代码,发现数据都在源代码中,基本可以确定是静态网页了。

这时还需要注意的是,虽然数据在网页源代码中,但是网页源代码的网页标签是和点击鼠标右键检查中看到的网页结构是不同的,所以需要要re正则表达式提取网页数据。

三、导包

代码语言:javascript
复制
import requests
import re
import xlwt
import time

四、创建列表保存数据

代码语言:javascript
复制
job_name_t_data = []
job_href_url_data = []
company_name_data = []
providesalary_text_t_data = []
attribute_text_t_data = []
jobwelf_list_data = []
updatedate_data = []

五、构建反反爬虫措施,并请求数据

代码语言:javascript
复制
headers = {
    'User-Agent': 'Googlebot'
}
for i in range(1, 401):
    url = 'https://search.51job.com/list/030200%252c040000%252c030500%252c030600%252c030700,000000,0000,00,9,99,+,2,{}.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=1&dibiaoid=0&line=&welfare='.format(i)
    time.sleep(2)

    response = requests.get(url, headers=headers).text

Googlebot是谷歌的网页抓取机器人,类似于中国的百度蜘蛛,加进User-Agent里,可以轻松的跳过一些网站的反爬虫措施。

六、解析数据

网页结构有的像json数据,所以直接复制数据以及前面的标签下来,用.*?万能匹配进行提取。

代码语言:javascript
复制
    # 详情页链接
    job_href = re.findall(r'"job_href":"(.*?)"', response)
    # 替换链接中的斜杠
    job_href_url = [i.replace(r'\/', '/') for i in job_href]
    # 职位名称
    job_name = re.findall('"job_name":"(.*?)"', response)
    job_name_t = [x.replace(r'\/', '/') for x in job_name]
    # 公司名称
    company_name = re.findall('"company_name":"(.*?)"', response)
    # 薪资
    providesalary_text = re.findall('"providesalary_text":"(.*?)"', response)
    providesalary_text_t = [x.replace(r'\/', '/') for x in providesalary_text]  
    # 工作地址/经验要求/学历要求/招聘人数
    attribute_text = re.findall(r',"attribute_text":.*?(.*?)],', response)  
    attribute_text_t = [x.replace(r'\/', '/').replace('[', '') for x in attribute_text]
    # 福利
    jobwelf_list = re.findall('"jobwelf":"(.*?)"', response)  
    #发布时间
    updatedate = re.findall('"updatedate":"(.*?)"', response)

一个一个的遍历数据并保存在列表中。

代码语言:javascript
复制
    for a,b,c,d,e,f,j in zip(job_name_t,company_name,providesalary_text_t,attribute_text_t,jobwelf_list,updatedate,job_href_url):
        job_name_t_data.append(a)
        company_name_data.append(b)
        providesalary_text_t_data.append(c)
        attribute_text_t_data.append(d)
        jobwelf_list_data.append(e)
        updatedate_data.append(f)
        job_href_url_data.append(j)

七、数据保存

代码语言:javascript
复制
#创建工作簿
work_book = xlwt.Workbook(encoding='utf-8')
#创建名为招聘信息工作表
sheet = work_book.add_sheet('招聘信息')
#创建标题行
cool = ('职位名称', '公司名称', '薪资', '工作地址/经验要求/学历要求/招聘人数', '福利', '发布时间', '详情页链接')
#遍历cool,一个一个的传入招聘信息工作表的第一行
for i in range(0, 7):
    sheet.write(0, i, cool[i])
#抓取2w条招聘数据
for i in range(0, 20000):
    sheet.write(i + 1, 0, job_name_t_data[i])
    sheet.write(i + 1, 1, company_name_data[i])
    sheet.write(i + 1, 2, providesalary_text_t_data[i])
    sheet.write(i + 1, 3, attribute_text_t_data[i])
    sheet.write(i + 1, 4, jobwelf_list_data[i])
    sheet.write(i + 1, 5, updatedate_data[i])
    sheet.write(i + 1, 6, job_href_url_data[i])
work_book.save('招聘信息.xls')

预览下数据,包括标题行一共2万条数据。

八、结语

本文代码较为粗糙,有很多可以简洁的地方,适合新手入门。

前程无忧的网站和大部分的静态网页不同,前端代码与后端代码不相同,所以需要认真的分析网页,不然可能掉进网页的反爬虫的陷阱里。

个人认为,写爬虫最重要的一点是分析网页,如果网页没有分析对,可能你再怎么写都是做无用功。按照爬虫的基本步骤进行写爬虫是个很好的习惯,能大大的提高写爬虫的效率。

注:本文仅用于学习以及知识交流!如果侵权,请告知删除!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、分析网页
  • 三、导包
  • 四、创建列表保存数据
  • 五、构建反反爬虫措施,并请求数据
  • 六、解析数据
  • 七、数据保存
  • 八、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档