文章目录

  • 前言
  • 一、分析url
  • 二、获取所有城市和页数
  • 三、生成params参数
  • 四、获取数据
  • 总结

前言

利用selenium+requests访问页面爬取拉勾网条招聘信息


提示:以下是本篇文章正文内容,下面案例可供参考

一、分析url

观察页面可知,页面数据属于动态加载 所以现在我们通过抓包工具,获取数据包


观察其url和参数

url="https://www.lagou.com/jobs/positionAjax.json?px=default&needAddtionalResult=false"
参数:
city=%E5%8C%97%E4%BA%AC  ==》城市
first=true  ==》无用
pn=1  ==》页数
kd=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90  ==》商品关键词

所以我们要想实现全站爬取,需要有city和页数

二、获取所有城市和页数

我们打开拉勾网,观察后发现,他的数据并不是完全展示的,比如说 在城市筛选选择全国 仅仅只显示30页 但总页数是远远大于30页的;我又选择北京发现是30页又选择北京下的海淀区又是30页,可能我们无法把数据全部的爬取,但我们可以尽可能的将数据多的爬取



我们为了获取全站数据,必然离不开的有两个参数 一个是城市一个是页数,所以我们利用selenium自动化去获取所有城市和对应页数

def City_Page(self):City_Page={}url="https://www.lagou.com/jobs/allCity.html?keyword=%s&px=default&companyNum=0&isCompanySelected=false&labelWords="%(self.keyword)self.bro.get(url=url)sleep(30)print("开始获取城市及其最大页数")if "验证系统" in self.bro.page_source:sleep(40)html = etree.HTML(self.bro.page_source)city_urls = html.xpath('//table[@class="word_list"]//li/input/@value')for city_url in city_urls:try:self.bro.get(city_url)if "验证系统" in self.bro.page_source:sleep(40)city=self.bro.find_element_by_xpath('//a[@class="current_city current"]').textpage=self.bro.find_element_by_xpath('//span[@class="span totalNum"]').textCity_Page[city]=pagesleep(0.5)except:passself.bro.quit()data = json.dumps(City_Page)with open("city_page.json", 'w', encoding="utf-8")as f:f.write(data)return City_Page

三、生成params参数

我们有了每个城市对应的最大页数,就可以生成访问页面所需的参数

def Params_List(self):with open("city_page.json", "r")as f:data = json.loads(f.read())Params_List = []for a, b in zip(data.keys(), data.values()):for i in range(1, int(b) + 1):params = {'city': a,'pn': i,'kd': self.keyword}Params_List.append(params)return Params_List

四、获取数据

最后我们可以通过添加请求头和使用params url来访问页面获取数据

def Parse_Data(self,params):url = "https://www.lagou.com/jobs/positionAjax.json?needAddtionalResult=false"header={'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; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36','cookie':''}try:text = requests.get(url=url, headers=header, params=params).textif "频繁" in text:print("操作频繁,已被发现 当前为第%d个params"%(i))data=json.loads(text)result=data["content"]["positionResult"]["result"]for res in result:with open(".//lagou1.csv", "a",encoding="utf-8") as f:writer = csv.DictWriter(f, res.keys())writer.writerow(res)sleep(1)except Exception as e:print(e)pass

总结

尽管数据只显示前30页,但数据还是未完全获取

在利用selenium获取城市最大页数时 应手动登录拉勾网,并且其在访问过程中可能会出现验证系统需要验证

利用requests访问页面获取数据时 尽量sleep时间长一点,操作频繁会封IP

最后,如果你对爬虫项目感兴趣,可去我主页浏览,已经更新多个爬虫项目,所以数据源码均在公众号“阿虚学Python”中,本次源码获取 回复“拉钩”获取

如果觉得这篇文章不错,就点个赞吧

爬虫项目十八:用Python对拉钩网全部城市所有招聘信息爬取相关推荐

  1. 爬虫实战系列(八):淘宝店铺各品牌手机售卖信息爬取及可视化

    声明:本博客只是简单的爬虫示范,并不涉及任何商业用途. 一.前言 最近博主在浏览淘宝时突然萌发了一个想爬它的念头,于是说干就干,我便开始向淘宝"下毒手"了.由于本人平时经常喜欢在淘 ...

  2. 【2020-10-27】 scrapy爬虫之猎聘招聘信息爬取

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! scrapy爬虫之猎聘招聘信息爬取 1.项目场景 目标网址:https://www.liepin.com/zhao ...

  3. python拉勾网招聘信息爬取(单线程,最新)

    一.任务描述 爬取拉勾网发布的关于"会计"岗位的招聘信息,通过查询相关文章发现,普遍都是使用单线程对网站信息进行爬取,且拉勾网经过多次维护更新,对简单的爬取代码有反爬虫机制,例如不 ...

  4. python网易云热歌榜歌曲信息爬取(iframe框架内数据爬取,src为空)

    为一线医护人员加油! 为武汉加油! 为中国加油! 为世界加油! 此爬虫是本人参考了了一位前辈的文章,并修改和优化了代码: 1.改为python3环境: 2.优化了抓取的歌曲时长中带一长串小数的问题: ...

  5. 爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何

    文章目录 前言 一.分析URL 二.获取影评 三.代码实现 四.词云 前言 爬取豆瓣影评,爬虫代码已经封装好,修改请求头 和url即可采集你想要采集的电影影评 提示:以下是本篇文章正文内容,下面案例可 ...

  6. 爬虫项目八:Python对天猫商品数据、评论数据爬取

    文章目录 前言 一.商品数据 1.分析url 2.登录账号 3.解析数据 4.模拟滑动滑块 二.评论数据 1.分析url 2.解析数据 前言 天猫商城商品数据.评论数据爬取 提示:以下是本篇文章正文内 ...

  7. Scrapy项目 - 数据简析 - 实现腾讯网站社会招聘信息爬取的爬虫设计

    一.数据分析截图 本例实验,使用Weka 3.7对腾讯招聘官网中网页上所罗列的招聘信息,如:其中的职位名称.链接.职位类别.人数.地点和发布时间等信息进行数据分析,详见如下图: 图1-1 Weka 3 ...

  8. python爬虫入门教程04:招聘信息爬取

    前言

  9. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化

    最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...

  10. 八十八、Python | 十大排序算法系列(下篇)

    @Author:Runsen @Date:2020/7/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...

最新文章

  1. founder of girton college
  2. Qt Creator 代码自动补全设置
  3. python tkinter 弹窗_tkinter主窗口和子窗口同时弹出该怎么办?
  4. bitcoin: 何为燃烧地址
  5. “咏刚的家”全新改版
  6. 邮件服务器突然很慢,原因探究与处理
  7. 一个词三个功能,较真人员少啊
  8. UiPath手把手中文教程PDF
  9. 顺丰速运电子面单打印步骤 快递鸟教程
  10. CoVaR计算手册-动态CoVaR模型-数据、代码、步骤
  11. 线程typedef UINT (_cdecl* AFX_THREADPROC)(LPVOID)类型转换无效
  12. 英雄联盟一直连接服务器win10,手把手修复win10系统英雄联盟连接不上服务器的解决方法...
  13. HttpClient:connection still allocated 完美处理
  14. 微信小程序中的用户ID(包括openid和unionid)
  15. TCP/IP协议栈 路由器 交换机
  16. 在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)
  17. 计算机研究生就业方向之考公
  18. java inet aton_IP处理函数inet_aton()和inet_ntoa()使用说明
  19. 【P1889 士兵站队】(洛谷)
  20. SpringBoot项目中的 ClassPath路径指的是哪个路径

热门文章

  1. Chrome网页视频加速器介绍
  2. 根据点度分布情况,拟合线性公式
  3. BOM成本计算成最下级算到最上级
  4. String类题目methods总结
  5. ios 加载大量图片崩溃_iOS 加载过大图片闪退
  6. java 拟合曲线_关于java实现自定义曲线拟合的研究
  7. Linux iptables MASQUERADE的作用
  8. 联想计算机启机按F1,电脑开机提示按f1不能正常启动怎么办
  9. STM32-DMA控制器
  10. 路在脚下--我的程序员之路