前程无忧网站内容( 【伙伴快讯】51job数据数据分析师,)

优采云 发布时间: 2021-11-28 10:09

  前程无忧网站内容(

【伙伴快讯】51job数据数据分析师,)

  我们以数据分析师为例,抓取 51job 51job 上的职位信息

  首先导入所有使用的库

  import requests

from urllib import parse # 将中文转换为%***格式

from lxml import etree # 解析数据

import re # 解析数据

from fake_useragent import UserAgent # 随机请求头

  先看的url,非常长,我们会吗?以下全部删除后,发现不影响访问。删除的url如下

  https://search.51job.com/list/000000,000000,0000,00,9,99,%25E6%2595%25B0%25E6%258D%25AE%25E5%2588%2586%25E6%259E%2590%25E5%25B8%2588,2,1.html

  通过观察,我们发现长列表是我们要搜索的——数据分析师,前面的99是我们要搜索的薪水范围,.html的前面代表页数,所以我们将其用作变量 Receive 以便我们可以修改

  page=1 # 搜索第一页

key="数据分析师" # 搜索词

key=parse.quote(key) # parse.quote能将汉字转换成那么一长串的东西

salary=99 # 99默认全部,输入范围“A-B”表示从A到B的薪资范围

  通过观察,我们发现我们想要的URL在一个script标签中,所以使用正则表达式是一个不错的选择

  url = f'https://search.51job.com/list/000000,000000,0000,00,9,{salary},{key},2,{page}.html'

headers = {

'User-Agent': str(UserAgent().random), # 随机请求头

}

def get_text(url): #获取网页文本

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

return response.content.decode('gbk')

def get_url(): #拿到职位链接

hrefs=re.findall('"job_href":"(.*?)"',get_text(url)) # 正则提取职位链接

hrefs=list(map(lambda x: x.replace("\\", ''), hrefs)) # 得到的url中有多余的'\',因此我们将它替换为空

# map函数可以将一个函数作用于一个可迭代对象中的所有元素,而使用"\\"是为了防止转义

return hrefs

  我们获取第一页的所有url,然后获取每个job页面的详细信息

  def parse():

for i in get_url():

text=get_text(i)

html=etree.HTML(text)

# 职位名称

title=html.xpath("//h1/@title")[0]

# 公司名称

job_dict['company']=html.xpath('//div[contains(@class,cn)]/p/a/@title')[0]

# 招聘要求

require=html.xpath('//div[contains(@class,cn)]/p[2]/@title')[0]

require=require.split('|')

job_dict['location'] = require[0].replace(r'\xa0','') # 地点

job_dict['experience'] = require[1].replace(r'\xa0','') # 经验

job_dict['education'] = require[2].replace(r'\xa0','') # *敏*感*词*

# 职位描述

job_dict['what']=html.xpath("//div[@class='bmsg job_msg inbox']/p/text()")[0]

job_list.append(job_dict)

df=pd.DataFrame(job_list)

df.to_excel("51job职位详情.xlsx")

  最后直接调用parse()函数,大功告成!!!

  

  !!!当然可以加一个循环来抓取51job的多个页面,但是51job的IP检测好像很强。所以,如果要爬取51job的数据,就要准备大量的可用IP。所以,对于抗爬强网站来说,显然使用selenium更让人印象深刻,好吧,希望你看完这篇文章后能帮到你,谢谢阅读

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线