爬取拉勾网招聘信息

1、在网页源代码中搜索信息,并没有搜到,判断网页信息使用Ajax来实现的

2、查看网页中所需的数据信息,返回的是JSON数据;

3、条件为北京+数据分析师的公司一共40087家,而实际拉勾网展示的数据只有
15条/页 * 30页 = 450条,所以需要判断想要展示的数据是否能在30页展示完成,超过30页则获取30页数据

4、获取请求头与Form Data数据

5、将数据以CSV文件存储(首先创建文件,可以最后将表头信息写入)

with open('lagou.csv', 'w', newline = '', encoding='utf-8') as csvfile:fieldnames = ['businessZones', 'companyFullName', 'companyLabelList', 'companyShortName', 'companySize', 'district','education', 'financeStage', 'firstType', 'industryField', 'industryLables', 'linestaion','positionAdvantage', 'positionName', 'publisherId', 'salary', 'secondType', 'stationname', 'workYear']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()

6、源代码展示

import json
import requests
import math
import time
import csvheaders = {'Cookie':'LGUID=20160325221916-8e713da1-f294-11e5-baa9-5254005c3644; __guid=237742470.2209186392686119200.1542463319285.1892; WEBTJ-ID=20181117220200-16721fa777529f-063fc0ee1ebcef-5768397b-1049088-16721fa77761fb; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1542463323; _ga=GA1.2.1018218803.1542463324; _gid=GA1.2.545935771.1542463324; user_trace_token=20181117220345-9917d84f-ea71-11e8-892e-5254005c3644; LGSID=20181117220345-9917db98-ea71-11e8-892e-5254005c3644; PRE_UTM=m_cf_cpt_baidu_pc; PRE_HOST=www.baidu.com; PRE_SITE=https%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dutf-8%26f%3D8%26rsv_bp%3D1%26rsv_idx%3D1%26tn%3Dbaidu%26wd%3Dlagouwang%26oq%3D%252526lt%25253BSDN%2525E5%25258F%252591%2525E5%2525B8%252583%2525E7%25259A%252584%2525E5%25258D%25259A%2525E5%2525AE%2525A2%2525E5%25258F%2525AF%2525E4%2525BB%2525A5%2525E4%2525BF%2525AE%2525E6%252594%2525B9%26rsv_pq%3Ded43d71700033d83%26rsv_t%3D43b1GYsCSHSQp1N%252FIp1eR1J3VXskMjt44RcbJkSNM8%252BbE%252Fc4aKUjcI%252FhflA%26rqlang%3Dcn%26rsv_enter%3D1%26rsv_sug3%3D10%26rsv_sug1%3D3%26rsv_sug7%3D100%26rsv_sug2%3D0%26inputT%3D25206156%26rsv_sug4%3D25206157; PRE_LAND=https%3A%2F%2Fwww.lagou.com%2Flp%2Fhtml%2Fcommon.html%3Futm_source%3Dm_cf_cpt_baidu_pc; JSESSIONID=ABAAABAAADEAAFI6E3B7886F4C8194B687AAD66C7925F67; index_location_city=%E5%85%A8%E5%9B%BD; SEARCH_ID=96d9378ed73e4c278dc3c4b140ecebaf; LGRID=20181117220435-b693f2da-ea71-11e8-a49f-525400f775ce; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e6=1542463375; monitor_count=7','Host':'www.lagou.com','Origin':'https://www.lagou.com',   'Referer':'https://www.lagou.com/jobs/list_%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%B8%88labelWords=sug&fromSearch=true&suginput=shujufenxishi',labelWords=sug&fromSearch=true&suginput=shujufenxishi','User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','X-Anit-Forge-Code':'0','X-Anit-Forge-Token':'None','X-Requested-With':'XMLHttpRequest'
}# 创建一个csv文件,并将表头信息写入文件中
with open('lagou.csv', 'w', encoding='utf-8') as csvfile:fieldnames = ['businessZones', 'companyFullName', 'companyLabelList', 'companyShortName', 'companySize', 'district','education', 'financeStage', 'firstType', 'industryField', 'industryLables', 'linestaion','positionAdvantage', 'positionName', 'publisherId', 'salary', 'secondType', 'stationname', 'workYear']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()# 判断所查询的信息是否用30页可以展示完,大于30页的爬取30页内容
def get_page(url, params):html = requests.post(url, data=params, headers=headers)json_data = json.loads(html.text)total_count = json_data['content']['positionResult']['totalCount'] # 获取信息公司信息总数page_number = math.ceil(total_count / 15) if math.ceil(total_count / 15) < 30 else 30get_info(url, page_number)def get_info(url, page):for pn in range(1, page + 1):params = {'first': 'true' if pn == 1 else 'false',  # 第一页点击是true,其余页均为false'pn':str(pn), # 传入页面数的字符串类型'kd':'数据分析师' # 想要获取的职位}try:html = requests.post(url, data=params, headers=headers)json_data = json.loads(html.text)results = json_data['content']['positionResult']['result'] # 获取JSON数据内容for result in results: # 获取每条数据并以字典类型存储infos = {'businessZones' : result['businessZones'],'companyFullName' : result['companyFullName'],'companyLabelList' : result['companyLabelList'],'companyShortName' : result['companyShortName'],'companySize' : result['companySize'],'district' : result['district'],'education' : result['education'],'financeStage' : result['financeStage'],'firstType' : result['firstType'],'industryField' : result['industryField'],'industryLables' : result['industryLables'],'linestaion' : result['linestaion'],'positionAdvantage' : result['positionAdvantage'],'positionName' : result['positionName'],'publisherId' : result['publisherId'],'salary' : result['salary'],'secondType' : result['secondType'],'stationname' : result['stationname'],'workYear' : result['workYear']}print('-------------')print(infos)write_to_file(infos) # 调用写入文件函数time.sleep(2)except requests.RequestException :pass# 将数据追加写入之前创建的lagou.csv文件中
def write_to_file(content):with open('lagou.csv', 'a', newline='') as csvfile:writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writerow(content)csvfile.close()# 传入url ,(url中参数包括,城市:北京;),引用get_page函数
if __name__ == '__main__':url = 'https://www.lagou.com/jobs/positionAjax.json?px=default&city=%E5%8C%97%E4%BA%AC&needAddtionalResult=false'params = {'first': 'true','pn': '1','kd': '数据分析师'}get_page(url, params)

用python爬取拉勾网招聘信息并以CSV文件存储相关推荐

  1. Python爬取拉勾网招聘信息

    此代码运行建议Python3,省却中文编码的麻烦 遇到的几个问题: (1)拉钩网的数据是通过js的ajax动态生成,所以不能直接爬取,而是通过post'http://www.lagou.com/job ...

  2. Python搭建代理池爬取拉勾网招聘信息

    先来看一张图了解下爬虫 实现功能 多线程爬取拉勾网招聘信息 维护代理 ip 池 搭建 node 服务器 Taro 使用 echarts 做数据分析 1.多线程爬取拉勾网招聘信息 Tip:涉及知识 1. ...

  3. Python爬虫实战之一 - 基于Requests爬取拉勾网招聘信息,并保存至本地csv文件

    Python爬虫实战之二 - 基于Requests抓取拉勾网招聘信息 ---------------readme--------------- 简介:本人产品汪一枚,Python自学数月,对于小白,本 ...

  4. 【python爬虫02】使用Scrapy框架爬取拉勾网招聘信息

    使用Scrapy框架爬取拉勾网招聘信息 最近接触了Scrapy爬虫框架,简单写了个爬虫爬取拉钩网的招聘信息,加深对Scrapy框架的理解,不得不说Scrapy框架其实还是蛮方便的,就像爬虫流水线一样, ...

  5. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(一)

    文章目录 前言 一.准备我们的库 二.分析分析 三. 代码 四.数据展示 小唐的心路历程 上一篇:没有啦! 下一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(二) 前言 有 ...

  6. 什么你还不知道招聘信息,小唐来教你——最新2021爬取拉勾网招聘信息(二)

    文章目录 前言 一.准备我们的库 二.数据清洗 三.核密度图及词云制作 四.完整代码 五.扩展 上一篇:什么你还不知道招聘信息,小唐来教你--最新2021爬取拉勾网招聘信息(一) 下一篇:没有拉! 前 ...

  7. 什么样的人才能做互联网产品经理【爬取拉勾网招聘信息】

    分析目的 在这个校招如火如荼的季节,相信大家对各种招聘网站已经再熟(yan)悉(fan)不过了,各种java开发.算法.前端.后端岗位真的是琳琅满目,而我觉得其中与我的个人兴趣和专业匹配度最高的就是产 ...

  8. 爬取拉勾网招聘信息(招聘岗位,公司名称,薪资等)

    用爬虫框架进行爬取,框架还是feapder 代码如下: import feapder#轻量级爬虫 class LastAirSpider(feapder.AirSpider):def start_ca ...

  9. Python爬取51job招聘信息

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  10. 2.简单爬虫————爬取拉勾网招聘信息(一)

    该文章仅供学习,如有错误,欢迎指出 1.开始创建一个项目 mkdir lagou 2.进入到文件夹下创建python3的虚拟环境 pipenv install scrapy 3.进入pipenv 下使 ...

最新文章

  1. 中国书法的造型元素与原理 刘彦湖
  2. cocos2d-x3.0rc打包apk遇到的一些问题记录
  3. 设计模式之_Iterator_01
  4. 杀入“果链”!闻泰科技取代台厂成苹果MacBook组装供应商
  5. map的四种遍历方式
  6. Android学习笔记(一)——控件布局常用属性
  7. 使用 Helm - 每天5分钟玩转 Docker 容器技术(163)
  8. Bootstrap-1
  9. AutoCAD2007 中文版标准教程
  10. hadoop组件及其作用
  11. 查看Win10激活剩余时间
  12. Google Play 商品详情,考试内容
  13. 【阅读笔记】《深度学习》第一章:引言
  14. 文字检测与识别1-MSER
  15. AES解密类,解密案例 解决No matching distribution found for Crypto
  16. Cadence创建异形焊盘教程(详细操作)
  17. axios 的 qs库
  18. 夜莺:2019年运营微信个人号的3个营销价值
  19. 宝宝生活点滴(2010.05)
  20. 分享五年码农生涯历程经验及2018总结 | 掘金年度征文

热门文章

  1. Python Pandas缺省值(NaN)处理
  2. android截屏大小不一致,Android中的高分辨率屏幕截图
  3. 给创业公司CEO的临别赠言
  4. 【人工智能项目】LSTM实现电影评论情感分类实验
  5. 持续测试(Continuous Testing)
  6. 688. 骑士在棋盘上的概率(中等 动态规划)
  7. 练习4-10 找出最小值 (20分) 本题要求编写程序,找出给定一系列整数中的最小值。
  8. 依图科技发布语音开放平台,联袂微软、华为撬动语音市场
  9. linux shell fflush,強制shell腳本fflush
  10. <<视觉问答>>2021:How Transferable are Reasoning Patterns in VQA?