最佳实践:Python突破拉钩反爬机制,采集各类招聘数据
优采云 发布时间: 2022-12-15 08:38最佳实践:Python突破拉钩反爬机制,采集各类招聘数据
首先,这个有什么用?如果有用,那就没用了。如果没用,那就没用了。既然我们能够得到这些数据,那么我们就可以利用它们来进行数据分析。可以有效获取职位信息、薪资信息等,也可以让找工作更容易,在匹配职位和公司时可以更有选择性
如有异议,直接上代码!之后有具体的教程和大致的代码思路!使用的解释器是Python3.7.1,编辑器是Pycharm 2018.3.5。本着虚心求学,孜孜不倦的精神,把赖赖逼到这里来虚心求学,孜孜不倦,把赖赖给逼了。不喜勿喷。开恩。
私信小编001领取Python学习资料
本节涉及:Request的基本使用,Request的高级使用-会话维护,Cookies,Ajax,JSON数据格式
关于Request的更多细节,请参考Request官方文档:
易入门汉化版
进阶使用汉化版
Cookie:有时也使用其复数形式 Cookies。类型为“小文本文件”,是一些网站为了识别用户身份和跟踪会话而存储在用户本地终端的数据(通常是加密的),信息被临时或永久保存通过用户的客户端计算机
Ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),指的是一种用于创建交互式、快速和动态的网络应用程序的网络开发技术,它可以在不重新加载整个网页的情况下更新部分网页。
Ajax 通过在后台与服务器交换少量数据,使网页能够异步更新。这意味着可以在不重新加载整个网页的情况下更新网页的部分内容。
JSON(JavaScript Object Notation):它是一种轻量级的数据交换格式。便于人类阅读和书写。机器也很容易解析和生成。它基于 JavaScript 编程语言的子集,标准 ECMA-262 第 3 版 – 1999 年 12 月。JSON 使用完全独立于语言的文本格式,但也使用类似于 C 语言家族(包括 C、C++、C# 、Java、JavaScript、Perl、Python 等)。这些特性使 JSON 成为一种理想的数据交换语言。
首先介绍一下本章代码的基本思路:
四步(发起请求,获取响应,解析响应获取数据,保存数据)
准确的说,四个步骤中的三个是(发起请求,得到响应,解析响应,提取数据,保存数据)
请求一个网页(在搜索框输入你要找的帖子得到BASE_URL,) BASE_URL:添加请求头(注意添加Cookies)
请求BASE_URL观察响应信息和本网页源代码观察浏览器网页源代码,对比发现没有我们需要的信息:发现Ajax的踪迹。经过一系列的操作,找到了Ajax网页的地址(直接在这里请求这个链接是访问不了的):多次请求后,发现报错。错误原因是Cookies的限制,动态检测网页,时间间隔小。学了前言,就学会了。会话保持。动态获取Cookies,这样就可以彻底绕过这个“反爬”?答案肯定是迪娜。让我们进行会话维护并动态提取 cookie。混淆点:为什么cookie的维护是通过BASE_URL而不是Ajax_URL来维护的?下面根据我个人的理解对这个Ajax做一下解释: 结合Ajax的原理,Ajax的基本原理就是在网页中插入异步触发器。毕竟,他还在这个页面,并没有切换到其他页面。只需触发特定条件即可插入此页面
此时,您只需要提取相关数据即可。得到:
数据存储:(保存到数据库)
本源码地址:%E8%81%8C%E4%BD%8D%E6%8B%9B%E8%81%98/Demo_Mongo.py
这里我选择Mongo,接下来我们来操作一下。Mongo的安装这里不再赘述。文章和mongo相关,这里有几篇蔡哥和董哥推荐的文章文章。不好,不,我没有,我没说),地址如下: 前方高能预警,赶上!!!:(此时你已经安装好了mongo,可以正常使用mongo了,剩下的交给我,我来教你)
安装 pymongo 安装 pymogo
建立连接:重写原来的代码,增加类似下面的代码:
新的存储方式:定义存入数据库的方式
调用此方法:
注意:由于mongo的存储格式是key:value格式,所以我们提取的返回数据也必须是key:value格式:
看看我,看看我,我是怎么做到的,我是这样做的:
左手叉腰,右手颤抖,Over!
如果你只看文章,即使是我自己写的文章,光看文章也会糊涂。建议结合源码一起阅读。祝你学习进步,祝你成功。加油~写到最后:既然能读到这里,那我相信不是一个养成了无偿卖淫习惯的人,也就是说他或多或少也想自己干。所有的?下次出来吹牛,别拉钩知道,爬回去难吗?我会(虽然对于大佬来说,可能算不上反pickup,就像玩一样,这个确实是。但是,对于新手来说,已经很难了。)拉钩人我也做过。找工作的话可以找我,啊哈哈哈哈。
汇总:【POWER BI】用POWER BI抓取网页面数据(1)-单页抓取
上次我们介绍了如何使用Power BI抓取上市公司的财务报表,但细细分析,财务报表都是比较标准的表格,抓取工作自然简单。如何使用POWER BI来完成相对复杂的页面数据抓取呢?
今天我们尝试先解决第一个问题。
我们通过豆瓣音乐TOP 250来了解什么是结构化网页。下面的页面按照评分列出了不同的音乐专辑条目,每个音乐条目收录:
专辑名称艺术家/发行月份等信息评级
这是一个结构化网页,结构化网页的特点总结如下:
此类常规条目是结构化网页。POWER BI 可以抓取具有这种特性的数据吗?答案当然是肯定的。让我们尝试获取以下音乐数据。
结构化网页分析
第一步:打开POWER BI,进入Data Acquisition > Web,输入URL,出现如下界面
导入数据
有两个选项,基本和高级。今天我们只抓取第一页数据,所以先选择“Basic”。后面我们要抓取多页数据的时候,会介绍“高级”选项里面的设置。
解决方案确定后,会出现一个导航器,POWER BI会自动识别页面上的一些表格数据,如下图,但是我们发现都不是我们想要的结果。这里我们点击“Add table using example”
导航器 1
使用示例添加表
第 2 步:构建自定义结构化数据
这时会出现如下界面。我们注意到这个界面的上半部分是网页的预览。我们可以参考这个预览页面进行选择,而页面的下半部分是栏目。我们可以根据需要添加或删除列。
构建自定义结构化数据
我们双击第一列,会出现一些POWER BI识别的条目。这时候我们选择第一行的相册名称。同样的,我们在第二行输入Viva la...。输入两行后,下一行会自动识别我们的意图,填入后面几项的相册名称。
智能识别
同样的方法,我们添加列,逐列输入歌手/发行年份、评分等数据,如下图所示。
完整的数据采集
这里有两点值得注意:
歌手、发行年份、流派等信息混合在同一栏中。我们先抓取这一列混合数据,然后进一步梳理;以上信息为显性信息。即页面上可以直接看到的数据很容易抓取,我们也可以抓取通过“相册图片”等超链接加载的不可见数据。我们可以进入网页,右击第一个条目的图片,点击“复制图片地址”,将其复制到图片栏的一行中,同理复制第二个条目的图片,图片最后一个条目的地址,也将被自动识别。
当我们完成采集数据后,我们会对每一列进行重命名,方便我们后续的数据清洗。至此,我们已经在第一页抓取了我们想要的数据。
下期我们会继续介绍如何批量抓取以下网页的数据。