摘要:但这边特别提醒的是里看到的代码不等于请求网址拿到的返回值。这个文件包含了列表中所有请求的各项参数及返回值信息,以便你查找分析。理解了这几步,大部分网上的数据都可以拿到,说解决一半的问题可不是标题党。
网上爬虫的教程实在太多了,知乎上搜一下,估计能找到不下一百篇。大家乐此不疲地从互联网上抓取着一个又一个网站。但只要对方网站一更新,很可能文章里的方法就不再有效了。
每个网站抓取的代码各不相同,不过背后的原理是相通的。对于绝大部分网站来说,抓取的套路就那么一些。今天这篇文章不谈任何具体网站的抓取,只来说一个共性的东西:
如何通过 Chrome 开发者工具 寻找一个网站上特定数据的抓取方式。
(我这里演示的是 Mac 上的英文版 Chrome,Windows 中文版的使用方法是一样的。)
> 查看网页源代码在网页上右击鼠标,选择“ 查看网页源代码 ”( View Page Source ),就会在新标签页中显示这个 URL 对应的 HTML 代码文本。
此功能并不算是“开发者工具”一部分,但也很常用。这个内容和你直接通过代码向此 URL 发送 GET 请求得到的结果是一样的(不考虑权限问题)。如果在这个源代码页面上可以搜索到你要内容,则可以按照其规则,通过 正则、bs4、xpath 等方式对文本中的数据进行提取。
不过,对于很多异步加载数据的网站,从这个页面上并不能搜到你要的东西。或者因为权限、验证等限制,代码中获取到的结果和页面显示不一致。这些情况我们就需要更强大的开发者工具来帮忙了。
> Elements在网页上右击鼠标,选择“ 审查元素 ”( Inspect ),可进入 Chrome 开发者工具的 元素选择器 。在工具中是 Elements 标签页。
Elements 有几个功能:
选择元素 :通过鼠标去选择页面上某个元素,并定位其在代码中的位置。
模拟器 :模拟不同设备的显示效果,且可以模拟带宽。
代码区 :显示页面代码,以及选中元素对应的路径
样式区 :显示选中元素所受的 CSS 样式影响
从 Elements 工具里定位数据比我们前面直接在源代码中搜索要方便,因为你可以清楚看到它所处的元素结构。但这边特别提醒的是:
Elements 里看到的代码不等于请求网址拿到的返回值 。
它是网页经过浏览器渲染后最终呈现出的效果,包含了异步请求数据,以及浏览器自身对于代码的优化改动。所以,你并不能完全按照 Elements 里显示的结构来获取元素,那样的话很可能得不到正确的结果。
> Network在开发者工具里选择 Network 标签页就进入了网络监控功能,也就是常说的“ 抓包 ”。
这是爬虫所用到的最重要功能。它主要解决两个问题:
抓什么
怎么抓
抓什么 ,是指对于那些通过异步请求获取到的数据,如何找到其来源。
打开 Network 页面,开启记录,然后刷新页面,就可以看到发出的所有请求,包括数据、JS、CSS、图片、文档等等都会显示其中。从请求列表中可以寻找你的目标。
一个个去找会很痛苦。分享几个小技巧:
点击“ 搜索 ”功能,直接对内容进行查找。
选中 Preseve log ,这样页面刷新和跳转之后,列表不会清空。
Filter 栏 可以按类型和关键字筛选请求。
找到包含数据的请求之后,接下来就是用程序获取数据。这时就是第二个问题: 怎么抓 。
并不是所有 URL 都能直接通过 GET 获取(相当于在浏览器里打开地址),通常还要考虑这几样东西:
请求方法 ,是 GET 还是 POST。
请求附带的参数数据 。GET 和 POST 传递参数的方法不一样。
Headers 信息 。常用的包括 user-agent、host、referer、cookie 等。其中 cookie 是用来识别请求者身份的关键信息,对于需要登录的网站,这个值少不了。而另外几项,也经常会被网站用来识别请求的合法性。同样的请求,浏览器里可以,程序里不行,多半就是 Headers 信息不正确。你可以从 Chrome 上把这些信息照搬到程序里,以此绕过对方的限制。
点击列表中的一个具体请求,上述信息都可以找到。
找对 请求 ,设对 方法 ,传对 参数 以及 Headers 信息,大部分的网站上的信息都可以搞定了。
Network 还有个功能:右键点击列表,选择“ Save as HAR with content ”,保存到文件。这个文件包含了列表中 所有请求的各项参数及返回值信息 ,以便你查找分析。(实际操作中,我发现经常有直接搜索无效的情况,只能保存到文件后搜索)
除了 Elements 和 Network,开发者工具中还有一些功能,比如:
Sources ,查看资源列表和调试 JS。
Console ,显示页面的报错和输出,并且可以执行 JS 代码。很多网站会在这里放上招聘的彩蛋(自己多找些知名网站试试)。
但这些功能和爬虫关系不大。如果你开发网站和优化网站速度,就需要和其他功能打交道。这里就不多说了。
总结一下,其实你就记住这几点:
“ 查看源代码 ”里能看到的数据,可以直接通过程序请求当前 URL 获取。
Elements 里的 HTML 代码 不等于 请求返回值,只能作为辅助。
在 Network 里用内容关键字搜索,或保存成 HAR 文件后搜索,找到包含数据的实际请求
查看请求的具体信息,包括 方法、headers、参数 ,复制到程序里使用。
理解了这几步,大部分网上的数据都可以拿到,说“解决一半的问题”可不是标题党。
当然咯,说起来轻松几点,想熟练掌握,还是有很多细节要考虑,需要不断练习。但带着这几点再去看各种爬虫案例,思路会更清晰。
如果你想要针对爬虫更详细的讲解和指导,我们的“ 爬虫实战 ”课程了解一下,也有面向零基础的入门课程。
课程详情公众号(Crossin的编程教室)里回复 码上行动
════
其他文章及回答:
如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 区块链 | 人工智能 | 双11 | 嘻哈 | 爬虫 | 排序算法 | 我用Python | 高考 | 世界杯 | 竞猜 | requests
欢迎搜索及关注: Crossin的编程教室
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/42649.html
摘要:比如分钟破译朋友圈测试小游戏文章里用的方法但有些根本就没有提供网页端,比如今年火得不行的抖音。所以常用的方式就是通过在电脑上装一些抓包软件,将手机上的网络请求全部显示出来。总结下,重点是的抓取,关键是配置代理证书,难点是对请求的分析。 爬虫的案例我们已讲得太多。不过几乎都是 网页爬虫 。即使有些手机才能访问的网站,我们也可以通过 Chrome 开发者工具 的 手机模拟 功能来访问,以便...
摘要:文档写得很清楚,也有中文版,你只要看了最初的一小部分,就可以在代码中派上用场了。 关于爬虫的案例和方法,我们已讲过许多。不过在以往的文章中,大多是关注在 如何把网页上的内容抓取下来 。今天我们来分享下,当你已经把内容爬下来之后, 如何提取出其中你需要的具体信息 。 网页被抓取下来,通常就是 str 字符串类型的对象 ,要从里面寻找信息,最直接的想法就是直接通过字符串的 find 方法 ...
摘要:在知乎上,你一定关注了一些不错的专栏比如的编程教室。有需要的请在公众号里回复爬虫实战源码下载获取知乎专栏下载器源码,请在公众号的编程教室里回复关键字知乎除了代码外,本专栏打包好的也一并奉上,欢迎阅读与分享。 老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过 Python 和 爬虫 ,可以完成怎样的小工具。 在知乎上,你一定关注了...
摘要:就在最新的指数中,数据科学和机器学习项目的首选语言,现在排名仅次于语言,排在第二位,将打落到第三位。特别是在深度学习机器学习等领域的广泛使用,让一跃成为人工智能时代的网红语言。 ...
摘要:前言最近接了一个爬虫的私活,收益颇丰。项目需求一个类似百度文库的网站,要求给出获得文章,以形式保存下来。但是这次需要保存到这不难,难在要求格式不变。文章都是以许多标签组合在一起的。知情人请告知,感激不尽。 前言 最近接了一个爬虫的私活,收益颇丰。自认为对爬虫掌握的还算不错,爬过很多国内外网站,数据超过百万,应对过封IP、设验证码、假数据、强制登录等反爬虫手段。于是乎,我毫不犹豫的接下了...
阅读 3338·2021-11-22 15:22
阅读 2862·2021-10-12 10:12
阅读 2156·2021-08-21 14:10
阅读 3822·2021-08-19 11:13
阅读 2841·2019-08-30 15:43
阅读 3223·2019-08-29 16:52
阅读 438·2019-08-29 16:41
阅读 1427·2019-08-29 12:53