黑马程序员技术交流社区

标题: 【上海校区】爬虫必备工具,掌握它就解决了一半的问题 [打印本页]

作者: 不二晨    时间: 2018-7-19 09:43
标题: 【上海校区】爬虫必备工具,掌握它就解决了一半的问题
每个网站抓取的代码各不相同,不过背后的原理是相通的。对于绝大部分网站来说,抓取的套路就那么一些。今天这篇文章不谈任何具体网站的抓取,只来说一个共性的东西:
如何通过 Chrome 开发者工具寻找一个网站上特定数据的抓取方式。
(我这里演示的是 Mac 上的英文版 Chrome,Windows 中文版的使用方法是一样的。)
> 查看网页源代码在网页上右击鼠标,选择“查看网页源代码”(View Page Source),就会在新标签页中显示这个 URL 对应的 HTML 代码文本。
此功能并不算是“开发者工具”一部分,但也很常用。这个内容和你直接通过代码向此 URL 发送 GET 请求得到的结果是一样的(不考虑权限问题)。如果在这个源代码页面上可以搜索到你要内容,则可以按照其规则,通过正则、bs4、xpath 等方式对文本中的数据进行提取。
不过,对于很多异步加载数据的网站,从这个页面上并不能搜到你要的东西。或者因为权限、验证等限制,代码中获取到的结果和页面显示不一致。这些情况我们就需要更强大的开发者工具来帮忙了。
> Elements在网页上右击鼠标,选择“审查元素”(Inspect),可进入 Chrome 开发者工具的元素选择器。在工具中是 Elements 标签页。
Elements 有几个功能:
从 Elements 工具里定位数据比我们前面直接在源代码中搜索要方便,因为你可以清楚看到它所处的元素结构。但这边特别提醒的是:
Elements 里看到的代码不等于请求网址拿到的返回值
它是网页经过浏览器渲染后最终呈现出的效果,包含了异步请求数据,以及浏览器自身对于代码的优化改动。所以,你并不能完全按照 Elements 里显示的结构来获取元素,那样的话很可能得不到正确的结果。
> Network在开发者工具里选择 Network 标签页就进入了网络监控功能,也就是常说的“抓包”。
这是爬虫所用到的最重要功能。它主要解决两个问题:
抓什么,是指对于那些通过异步请求获取到的数据,如何找到其来源。
打开 Network 页面,开启记录,然后刷新页面,就可以看到发出的所有请求,包括数据、JS、CSS、图片、文档等等都会显示其中。从请求列表中可以寻找你的目标。
一个个去找会很痛苦。分享几个小技巧:
找到包含数据的请求之后,接下来就是用程序获取数据。这时就是第二个问题:怎么抓
并不是所有 URL 都能直接通过 GET 获取(相当于在浏览器里打开地址),通常还要考虑这几样东西:
点击列表中的一个具体请求,上述信息都可以找到。
找对请求,设对方法,传对参数以及 Headers 信息,大部分的网站上的信息都可以搞定了。
Network 还有个功能:右键点击列表,选择“Save as HAR with content”,保存到文件。这个文件包含了列表中所有请求的各项参数及返回值信息,以便你查找分析。(实际操作中,我发现经常有直接搜索无效的情况,只能保存到文件后搜索)
除了 Elements 和 Network,开发者工具中还有一些功能,比如:
Sources,查看资源列表和调试 JS。
Console,显示页面的报错和输出,并且可以执行 JS 代码。很多网站会在这里放上招聘的彩蛋(自己多找些知名网站试试)。
但这些功能和爬虫关系不大。如果你开发网站和优化网站速度,就需要和其他功能打交道。这里就不多说了。
总结一下,其实你就记住这几点:
理解了这几步,大部分网上的数据都可以拿到,说“解决一半的问题”可不是标题党。
当然咯,说起来轻松几点,想熟练掌握,还是有很多细节要考虑,需要不断练习。但带着这几点再去看各种爬虫案例,思路会更清晰。



作者:Crossin先生
链接:https://juejin.im/post/5b4efe78f265da0fa42cd2bd





作者: 不二晨    时间: 2018-7-19 13:56

优秀
作者: wuqiong    时间: 2018-7-19 14:15

作者: 吴琼老师    时间: 2018-7-19 16:42

作者: 摩西摩西OvO    时间: 2018-7-19 17:07





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2