数据分析之拉勾网(三)

拉勾网,这里用谷歌是打不开的,只能换其他浏览器,同样和第一篇步骤一样,也是找动态接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里需要注意的是cookie,因为这里每个cookie都是不一样的,所以我们需要先获取它们的cookie,然后才能构建我们的headers,这样才能获取我们需要的信息,通过返回值把每个网页的cookie传到我们的自己搭建的headers里面,这样就可以获取到数据了

def get_cookie():url = 'https://www.lagou.com/jobs/list_{}?labelWords=&fromSearch=true&suginput='.format(keyword)# 注意如果url中有中文,需要把中文字符编码后才可以正常运行headers = {'User-Agent': 'ozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400'}response = requests.get(url=url,headers=headers,allow_redirects=False)return response.cookies

然后就是构建我们的headers和data了,需要改的是data里面的kd而已,kd就是我们的关键词,sid是用md5加密的一个随机数,这里很好破解用我们的hashlib库就好了

 headers = {'Host': 'www.lagou.com','Origin': 'https://www.lagou.com','referer': 'https://www.lagou.com/jobs/list_{}?labelWords=&fromSearch=true&suginput='.format(keyword),'User-Agent': 'ozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3704.400 QQBrowser/10.4.3587.400'}data = {'first': 'false','pn':int(i),'kd': '景区讲解员','sid':str(random_id),}
md5 = hashlib.md5()
id = str(random.random())
md5.update(id.encode('utf-8'))
random_id = md5.hexdigest()

然后获取相关信息也是用正则表达式就好了

 # 招聘企业名称company_names = re.compile('"companyFullName":"(.*?)",', re.S | re.I)company_name = company_names.findall(content)# 招聘企业规模companysize_texts = re.compile('"companySize":"(.*?)",', re.S | re.I)companysize_text = companysize_texts.findall(content)# 招聘企业性质companytype_texts = re.compile('"financeStage":"(.*?)",', re.S | re.I)companytype_text = companytype_texts.findall(content)# 招聘工作地区workarea_texts = re.compile('"city":"(.*?)",', re.S | re.I)workarea_text = workarea_texts.findall(content)# 招聘职位名称job_names = re.compile('"positionName":"(.*?)",', re.S | re.I)job_name = job_names.findall(content)# 招聘岗位薪资providesalary_texts = re.compile('"salary":"(.*?)",', re.S | re.I)providesalary_text = providesalary_texts.findall(content)job_hrefs = re.compile('"positionId":(.*?),"', re.S | re.I)job_href = job_hrefs.findall(content)

然后当我们想要进去详细页面的时候,却发现,获取不了数据,这个原因也是因为拉勾的反爬虫机制,我们需要加一个params,这个params和上面的sid其实都是一个数,都是用Md5加密获得的,上面我们已经把它的md5给破解了,所以直接照着用就好了

 params = {'show':str(random_id),}

然后当我们进去的时候发现每个页面的链接是这样的

https://www.lagou.com/jobs/7553194.html?show=dd979620732248e0b4959dd25dd4b608

7553194这个数字我们可以通过上面的动态接口获得,后面show每个都是变化的,细心点发现,其实还是和上面的md5是一个东西来的,因为上面已经写好md5的解密了,所以还是直接拿来用就好了

    for j in job_href:href = "https://www.lagou.com/jobs/{}.html?show={}".format(j,str(random_id))html = requests.get(href, headers=headers, params=params, cookies=get_cookie())context = html.textsoup = etree.HTML(context)job_describe = soup.xpath('//div[@class= "job-detail"]/p/text()')j_d = soup.xpath('//div[@class= "job-detail"]/text()')job_name = soup.xpath('//h1[@class = "name"]/text()')Jobname.append(job_name)JobDescribe.append(job_describe)jobdescribe.append(j_d)df = pd.DataFrame()df["企业名称"] = company_namedf["企业规模"] = companysize_textdf["企业性质"] = companytype_textdf["工作地区"] = workarea_textdf["职位名称"] = Jobnamedf["岗位薪资"] = providesalary_textdf["岗位描述"] = JobDescribedf["岗位介绍"] = jobdescribetry:df.to_csv("拉勾网.csv", mode="a+", header=None, index=None, encoding="gbk")print("写入成功")except:print("当页数据写入失败")time.sleep(1)

这里就是全部思路了,代码的话,可以去我的GitHub账户上面把源代码下载下来,如果对你有帮助的话,不嫌麻烦,可以在我的GitHub点一下start,你的支持是我更新的动力

time.sleep(1)

这里就是全部思路了,代码的话,可以去我的GitHub账户上面把源代码下载下来,如果对你有帮助的话,不嫌麻烦,可以在我的GitHub点一下start,你的支持是我更新的动力[拉勾网源代码](https://github.com/13060923171/Crawl-Project2/tree/master/%E7%88%AC%E5%8F%96%E6%8B%89%E5%8B%BE%E7%BD%91%E6%8B%9B%E8%81%98%E4%BF%A1%E6%81%AF)[数据分析之前程无忧(一)](https://blog.csdn.net/zyh960/article/details/108084173)[数据分析之大街网(二)](https://blog.csdn.net/zyh960/article/details/108084272)[数据分析之拉勾网(三)](https://editor.csdn.net/md/?articleId=108084318)[数据分析之数据清洗(四)](https://blog.csdn.net/zyh960/article/details/108084347)

数据分析之拉勾网(三)相关推荐

  1. 《Spark快速大数据分析》—— 第三章 RDD编程

    本文转自博客园xingoo的博客,原文链接:<Spark快速大数据分析>-- 第三章 RDD编程,如需转载请自行联系原博主.

  2. (Adventure项目)自行车业务数据分析报告(三)

    (Adventure项目)自行车业务数据分析报告(三) 项目背景 Adventure Works Cycles是Adventure Works样本数据库所虚构的公司,这是一家大型跨国制造公司.该公司生 ...

  3. python 鱼骨图_数据分析必备的三种思考模型

    原标题:数据分析必备的三种思考模型 新人学习数据分析有个误区,认为Excel很Low,SQL做久了又是表哥表姐,学习python又陷入无尽的工具包中不能自拔,迷茫到找项目学习,结果是分析又不得要领,说 ...

  4. 【数据分析】数据分析方法(三):PEST 分析方法

    [数据分析]数据分析方法(三):PEST 分析方法 1. PEST 方法 PEST 分析方法是对公司发展宏观环境的分析,所以经常用于行业分析.通常是从 政策.经济.社会.技术 这四个方面来分析的. ( ...

  5. 小白学数据分析-----留存率的三个普适原则

    关于留存率的文章,现在很多,以下要说的内容实际上算是对于留存率使用的一个小归纳.这篇文章所要阐述的内容其实早在去年就已经形成了,一直没有足够的时间组织起来,因为我觉得虽然简单,不过影响的范畴和可扩展的 ...

  6. 数据分析数据挖掘(三)

    前面我自己写的我看着都头大,我看看能不能给大家写的精简点,好理解. 我们需要的数据: 链接:https://pan.baidu.com/s/1xr4x43bfEe4hVWYtwiFGRw 提取码:ya ...

  7. python 数据分析入门教程(三)_Python数据分析入门教程(三):数据选择——AIU人工智能学院-经管之家官网!...

    https://p1.pstatp.com/large/pgc-image/a6743a84f13a4f07a7ec3e9405467c6a 在上面的代码中,iloc后的方括号中逗号之前的部分表示要获 ...

  8. 基于python爬虫的岗位数据分析以拉勾网为例_爬虫小实例-拉勾网数据分析岗位...

    原标题:爬虫小实例-拉勾网数据分析岗位 欢迎关注天善智能 hellobi.com,我们是专注于商业智能BI,大数据,数据分析领域的垂直社区,学习.问答.求职,一站式搞定! 对商业智能BI.大数据分析挖 ...

  9. 【数据分析师-数据分析项目案例三】多因素房价预测分析案例

    多因素房价预测分析案例 1 数据来源 2 数据加载和基本的ETL 2.1 模块导入和数据加载 2.2 数据清洗 3 数据可视化 3.1 地理可视化 3.2 关系矩阵和热力图 3.3 添加衍生字段 3. ...

最新文章

  1. 讲座记录:从码农到架构师(精简版)
  2. 程序员必备网站之一:No Design
  3. matlab二阶导数表示,【单选题】在MATLAB符号计算中,y的二阶导数表示为( )。...
  4. Android中ActivityManagerService与应用程序(客户端)通信模型分析
  5. A*搜索算法--游戏寻路
  6. jQuery 和 YUI (Yahoo User Interface) 各自的优缺点有哪些?具体的使用场景是怎样的?...
  7. 【转】VS2010新建Web网站与新建Web应用程序的区别
  8. php 等比例缩略图,PHP等比例生成缩略图
  9. java spring oauth2.0_java – Spring引导oauth2管理httpbasic认证
  10. Atitit 搜索蓝牙设备 powershell的实现 java noede.js python 先用脚本语言python nodejs,不好实现。。Java 也不好实现。。 Netcore可以,
  11. allennlp train 参数
  12. 短视频系统+购物直播APP开发方案
  13. 计算机开机进桌面很久,教你解决win10电脑开机黑屏很久才进入桌面的方法
  14. java comp env_Java:comp/env/讲解与JNDI(转)
  15. linux 内核空间与用户空间通信,liunx用户空间和内核空间之间的通信实现(在PPC下的实现)...
  16. SD卡报错“error -110 whilst initialising SD card
  17. ios app 通过扫码下载ipa自动安装应用
  18. java12安装教程(win10)
  19. Aborted(core dumped)
  20. 行业实战 | 5G+边缘计算+“自由视角” 让体育赛事更畅快

热门文章

  1. HEAD detached from XXXX解决方法 HEAD detached at origin/master 问题的解决
  2. 计算机内存不足无法显示图片?
  3. SSH企业案例_CRM客户管理系统(六):Easyui列表展示
  4. MYSQL常见运算符和函数(四)
  5. 密码管理工具-KeePass入门指南
  6. 入坑KeePass(四)KeePass通过坚果云WebDav同步方法
  7. 机器人总动员英语情歌_机器人总动员经典句子
  8. 结构体struct声明、定义
  9. C++中野指针问题分析总结
  10. 越狱设备如何安装“AFC2”补丁?