网页视频抓取软件 格式工厂(数据爬取爬取拉勾网求职信息,废话不多说。)

优采云 发布时间: 2022-01-02 06:18

  网页视频抓取软件 格式工厂(数据爬取爬取拉勾网求职信息,废话不多说。)

  前言

  利用requests抓取拉勾求职信息,废话不多说。

  让我们快乐开始吧~

  开发工具

  **Python 版本:**3.6.4

  相关模块:

  请求模块;

  重新模块;

  操作系统模块

  结巴模块;

  熊猫模块

  numpy 模块

  pyecharts 模块;

  还有一些 Python 自带的模块。

  环境设置

  安装Python并将其添加到环境变量中,pip安装所需的相关模块。

  数据爬虫爬取拉勾网的求职信息1.requests request,获取单个页面

  # 我们最常用的流程:网页上复制url->发送get请求—>打印页面内容->分析抓取数据

# 1.获取拉钩网url

req_url = 'https://www.lagou.com/jobs/list_python?city=%E5%85%A8%E5%9B%BD&cl=false&fromSearch=true&labelWords=&suginput='

# 2.发送get请求

req_result = requests.get(req_url)

# 3.打印请求结果

print(req_result.text)

复制代码

  输出结果如下

  

HZRxWevI();é?μé?¢?? è????-...

复制代码

  我们可以看到,上面的结果和我们想象的还是有很大的不同。为什么会出现上述情况?其实很简单,因为它不是一个简单的静态页面。我们知道请求方法有两个基本区别:get 和 post 请求。

  (1)Get 是向服务器请求数据;Post 是向服务器提交数据的请求。要提交的数据位于消息头后面的实体中。GET 和 POST 只是发送的机制不同,取一个也不是一回事。(2)GET请求时,发送的信息是以url明文形式发送的,其参数会保存在浏览器历史或web服务器中,而帖子不会(这也是后来翻页的时候发现拉勾网翻页时浏览器url栏地址没有变化的原因。)

  2.分析页面加载并找到数据

  1.请求分析

  在拉勾网首页,按F12进入开发者模式,然后在查询框中输入python,点击搜索,经过我的搜索,终于找到了页面上职位信息所在的页面,它确实是post请求,页面返回的内容是json格式的字典。

  

  2.返回数据内容分析。页面上:我们主要获取7个数据(公司|城市|职位|薪资|*敏*感*词*要求|工作经验|职位优势)

  

  json数据中:我整理了爬下来的json数据,如下图

  

  我们会发现我们需要的所有数据都在req_info['content']['positionResult']['result']中,它是一个列表,收录了很多其他的信息。这次我们不关心其他数据。 我们需要的数据在下图

  

  3.添加headers信息模仿浏览器请求

  通过上面的请求分析,我们可以找到post请求的URL:...

  {'success': False, 'msg': '您操作太频繁,请稍后再访问', 'clientIp': '122.xxx.xxx.xxx'}

复制代码

  出现这个提示的原因是我们直接post访问网址,服务器会误认为我们是“机器人”。这也是反爬虫。解决方法很简单。添加请求头,完全模拟浏览器请求。 , 获取请求头如下图

  

  4.分析页面实现翻页抓取

  分析发现如下规律:在post请求中,有一个请求参数->表单数据,首先包括三个参数,kd,pn,通过*敏*感*词*演示,不难猜出其含义

  data = {

'first':'true', # 是不是第一页,false表示不是,true 表示是 'kd':'Python', # 搜索关键字

'pn':1 # 页码

}

复制代码

  

  代码

  import requests\

# 1. post 请求的 url\

req_url = 'https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false'\

# 2. 请求头 headers\

headers = {'你的请求头'}\

# 3. for 循环请求\

for i in range(1,31):\

data = { 'first':'false','kd':'Python','pn':i} \

# 3.1 requests 发送请求\

req_result = requests.post(req_url,headers = headers,data = data) req_result.encoding = 'utf-8'\

# 3.2 获取数据\

req_info = req_result.json() \

# 打印出获取到的数据\

print(req_info)

复制代码

  5.将抓取到的数据保存成csv文件

  def file_do(list_info): # 获取文件大小 file_size = os.path.getsize(r'G:\lagou_test.csv') \

if file_size == 0: \

# 表头 name = ['公司','城市','职位','薪资','*敏*感*词*要求','工作经验','职位优点'] \

# 建立DataFrame对象 file_test = pd.DataFrame(columns=name, data=list_info) \

# 数据写入 file_test.to_csv(r'G:\lagou_test.csv', encoding='gbk',index=False) \

else: \

with open(r'G:\lagou_test.csv','a+',newline='') as file_test : # 追加到文件后面 writer = csv.writer(file_test) \

# 写入文件 writer.writerows(list_info)

复制代码

  显示抓取的数据

  

  数据可视化数据分析+pyechart数据可视化

  薪酬分配分析

  

  我们可以看到python的工资基本都是10k起的,大部分公司给的工资在10k-40k之间,所以不用怕学python不够。

  2.工作地点分析

  

  通过图表我们不难看出,大部分需要python程序员的公司都位于北京、上海、深圳,而广州则落后。所以学python的同学千万不要走错城市。

  3.岗位教育要求

  

  从图表来看,python程序员的*敏*感*词*要求不高,主要是本科。虽然*敏*感*词*要求不高,但要有思考能力。

  4.工作经验要求

  

  主要是需要3-5年工作经验的学生,不老不幼,成熟稳重,能学新东西的年纪,招聘公司真聪明。

  5.岗位研究方向分析

  

  6.工作福利的好处分析

  # 福利关键词分析

content = ''

# 连接所有公司福利介绍

for x in positionAdvantage:

content = content + x

# 去除多余字符

content = re.sub('[,、(),1234567890;;&%$#@!~_=+]', '', content)

# jieba 切词,pandas、numpy计数

segment = jieba.lcut(content)

words_df = pd.DataFrame({'segment': segment})

words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数": numpy.size})

words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False) test = words_stat.head(1000).values

# 制作词云图\

codes = [test[i][0] for i in range(0,len(test))]

counts = [test[i][1] for i in range(0,len(test))]

wordcloud = WordCloud(width=1300, height=620,page_title='福利关键词') wordcloud.add("福利关键词", codes, counts, word_size_range=[20, 100]) wordcloud.render()

复制代码

  

  终于

  感谢您的支持和厚爱。小编每天都会和大家分享更多Python学习知识,记得关注小编哦。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线