本小白的第一篇文章,欢迎各位大神指导,本内容仅供学习使用。

需求

爬取拉钩网招聘信息,并进一步进行分析,仅学习使用。

使用工具

python3、PyCharm

步骤

一、分析拉钩网站构成
二、爬取数据
三、数据清洗
四、生成分析数据

一、分析拉钩网站构成

进入拉钩网,按F12检查,查看Network模块。
1、先确认网页类型(分静态和动态页面),进行上下页翻页,对比发现网站URL不变,为动态网页
2、查看获取方式为:POST
!3、查看Request headers,python中需要填写,留意关键信息。

4、查找需要爬取内容位置和格式。动态页面以json格式保存。

二、爬取信息框架

1、获取response

先爬取第一页信息进行简单测试。

import requests as re
import json
base_url = "https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false"
base_headers = {"Accept": "application/json, text/javascript, */*; q=0.01","Host": "www.lagou.com","Referer": "https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=",'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}
data = {"first": "true","pn": "1","kd": "数据分析"}
response = re.post(url=base_url, headers=base_headers, data=data)
print(response.text)

输出结果为:

失败,分析原因,用response.status_code == 200:代码测试,连接是成功的,但返回存在问题。查阅其他文章,发现是拉钩存在的反爬机制。response需要提供cookie。但python每次爬取提供的cookie不连续hi被判断为爬虫,从而禁止访问

这里找到了两个解决方法

解决方法一、:用Session()方法储存cookie

session = re.Session()      #创建cookie存储
session.get(url=base_url1,headers=base_headers)        #通过网址url1建立cookie
response = session.post(url=base_url, headers=base_headers, data=data)
response.encoding = 'utf-8'
print(response)

方法二、:用个人账号先进行登陆拉钩网的操作,再提url、headers、data也行。

2、提取需要的数据

用json格式提取即可

jobs_list = page['content']['positionResult']['result'] #获取职位信息

3、保存文件

4、代码优化,添加搜索结果总数、搜索功能、翻页功能详细看代码。

完整代码

import requests as re
import json
import pandas as pd
import time
import random#获取网页url
def get_url(keyword,pn):base_url1 = "https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput="    #不需要cookie的urlbase_url = "https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%B9%BF%E5%B7%9E&needAddtionalResult=false"base_headers = {"Accept": "application/json, text/javascript, */*; q=0.01","Host": "www.lagou.com","Referer": "https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90?labelWords=&fromSearch=true&suginput=",'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'}data = {"first": "true","pn": "{}".format(pn),"kd": "{}".format(keyword)}session = re.Session()      #创建cookie存储session.get(url=base_url1,headers=base_headers)        #通过网址url1建立cookieresponse = session.post(url=base_url, headers=base_headers, data=data)response.encoding = 'utf-8'#print(response)return response#解析网页信息
def total_Count(response):page = response.json()# print(page)total_count = page['content']['positionResult']['totalCount']   #totalCount为总个数pn_count = int(total_count)//15 + 1#页数print('职位总数{},共{}页'.format(total_count,pn_count))return pn_countdef parse_url(response):page = response.json()for i in range(1,16):jobs_list = page['content']['positionResult']['result']#print(jobs_list)page_info_list = []             #用于存储datafor i in jobs_list:job_info = []job_info.append(i['companyFullName'])job_info.append(i['companyShortName'])job_info.append(i['companySize'])job_info.append(i['financeStage'])job_info.append(i['district'])job_info.append(i['positionName'])job_info.append(i['workYear'])job_info.append(i['education'])job_info.append(i['salary'])job_info.append(i['positionAdvantage'])job_info.append(i['industryField'])page_info_list.append(job_info)print(page_info_list)return page_info_listdef save_data(page_info_list):df = pd.DataFrame(data=page_info_list,columns=['公司全名', '公司简称', '公司规模', '融资阶段', '区域', '职位名称', '工作经验', '学历要求', '工资', '职位福利','行业'])#print(df)df.to_csv('lagou8.7.csv', index=False,encoding='utf-8-sig')print('保存完成')#     #调用中心
def main():keyword = input('输入查找内容:')      #输入搜索内容a = get_url(keyword,pn=1)            #获取responesb = total_Count(a)                  # 获得数据总个数和页数total_info = []                     #用来储存每页parse_urlfor i in range(1,int(b)+1):         #实现翻页效果a = get_url(keyword, pn=i)c = parse_url(a)total_info += ctime.sleep(10)                   #设置休眠时间,避免访问速度过快print('成功获取第{}页'.format(i))d = save_data(total_info)if __name__ =="__main__":main()
#     a.main()

爬取结果

PYTHON爬取拉钩网相关推荐

  1. python 爬取拉钩网数据

    python 爬取拉钩网数据 完整代码下载:https://github.com/tanjunchen/SpiderProject/blob/master/lagou/LaGouSpider.py # ...

  2. python 爬取拉钩数据

    Python通过Request库爬取拉钩数据 爬取方法 数据页面 建表存储职位信息 解析页面核心代码 完整代码 结果展示 爬取方法 采用python爬取拉钩数据,有很多方法可以爬取,我采用的是通过Re ...

  3. Python 爬取拉勾招聘信息

    Python 爬取拉勾招聘信息 故事背景 最近有个好哥们啊浪迫于家里工资太低,准备从北方老家那边来深圳这边找工作,啊浪是学平面设计的知道我在深圳这边于是向我打听深圳这边平面设计薪资水平,当时我有点懵逼 ...

  4. python爬取拉勾网_python爬虫—爬取拉钩网

    本人自学python,小试牛刀,爬取广州片区拉钩网招聘信息.仅用于学习 参考文章:https://blog.csdn.net/SvJr6gGCzUJ96OyUo/article/details/805 ...

  5. python爬虫—爬取拉钩网

    本人自学python,小试牛刀,爬取广州片区拉钩网招聘信息.仅用于学习 参考文章:https://blog.csdn.net/SvJr6gGCzUJ96OyUo/article/details/805 ...

  6. python 异步加载图片_Python 爬取拉钩网异步加载页面

    如下是我简单的获取拉钩网异步加载页面信息的过程 获取的是深圳 Python 岗位的所有信息,并保存在Mongo中 (对于异步加载,有的人说是把你要爬页面的信息整个页面先爬下来,保存本地,然后再看有没有 ...

  7. 【2019.05】python 爬取拉钩数据(静态+动态)

    拉钩这个网站有点意思,页面加载有两种方法 点击首页的标签,页面是静态加载的 直接搜索,页是动态加载的 两种爬取方式不一样,这里都实现了. 动态爬取时会出现 '操作太频繁,请稍后再试'字样,出现这种情况 ...

  8. python爬取拉钩python数据分析职位招聘信息

    python数据分析 python数据分析是目前python最火的方向之一,为了解目前市场对该职位的需求,我们爬取了拉钩上对pythons数据分析的招聘信息. 环境 系统:windows7 pytho ...

  9. python 爬取拉钩招聘数据

    上一篇介绍在linux 搭建jupter lab,本文将介绍python数据接口的爬取以及提取建模分析的数据 导入依赖的包 import requests import time from urlli ...

  10. 爬取拉钩网,并做一定的数据可视化

    一.爬取代码 参考:前两个是数据化参考,最后一个是爬取拉勾网参考 https://blog.csdn.net/m0_48405781/article/details/108848131?ops_req ...

最新文章

  1. 如何发现优秀的IT开发人员
  2. windows 生成 deploy key_推荐一个免费生成点线/方格/横线纸张的网站
  3. 跨链(2)跨链技术“分布式私钥控制”
  4. 使用PHP-GTK编写一个windows桌面应用程序
  5. cvtcolor python opencv_二值分析 | OpenCV + skimage如何提取中心线
  6. CF662C Binary Table(FWT)
  7. [css] body{height:100%}和html,body{height:100%}有什么区别?为什么html要设置height:100%呢,html不就是整个窗口吗?
  8. flex结合asp.net上传深入详细解说(转载)
  9. Linux内核深入理解中断和异常(7):中断下半部:Softirq, Tasklets and Workqueues
  10. console.log()和alert()的区别
  11. nginx代理tomcat
  12. 图文详解!java高级工程师简历模板
  13. JSEclipse安装后无法打开js文件_火狐浏览器打开邮箱添加不了附件
  14. 凤凰服务器系统,凤凰系统云服务器
  15. android edge 去广告,edge浏览器怎么去广告? edge浏览器去广告插件adsafe的使用方法...
  16. 阿里云Dataworks
  17. Flash 控件的安装
  18. Codeforces Round #247 (Div. 2) - k-Tree
  19. '\xF0\x9F\x98\x82\xF0\x9F...'报错处理
  20. 魔兽延迟最低的服务器,魔兽世界延迟高解决方法

热门文章

  1. matlab 自写iradon,MATLAB 常用图像处理源码合集
  2. 11个非常炫酷的网页样式特效【附实现代码】
  3. 《卡拉马佐夫兄弟》:父子五人性格概述
  4. 柳州哪里有短视频创业直播基地?柳州市互联网协会为您精选4家
  5. 使用canvas制作在线涂鸦画板
  6. 2022年最新计算机专业毕业设计选题 - 选题推荐 毕设开题 简单易过 题目新颖
  7. java protected 构造方法_java中子类调用父类构造方法注意事项
  8. DMA控制器8237A
  9. fanuc机器人四边形编程_FANUC机器人编程与操作
  10. nginx.conf配置文件中timeout超时时间设置