2019独角兽企业重金招聘Python工程师标准>>>

网上爬虫的教程实在太多了,知乎上搜一下,估计能找到不下一百篇。大家乐此不疲地从互联网上抓取着一个又一个网站。但只要对方网站一更新,很可能文章里的方法就不再有效了。

每个网站抓取的代码各不相同,不过背后的原理是相通的。对于绝大部分网站来说,抓取的套路就那么一些。今天这篇文章不谈任何具体网站的抓取,只来说一个共性的东西:

如何通过 Chrome 开发者工具寻找一个网站上特定数据的抓取方式。

(我这里演示的是 Mac 上的英文版 Chrome,Windows 中文版的使用方法是一样的。)

> 查看网页源代码

在网页上右击鼠标,选择“查看网页源代码”(View Page Source),就会在新标签页中显示这个 URL 对应的 HTML 代码文本。

此功能并不算是“开发者工具”一部分,但也很常用。这个内容和你直接通过代码向此 URL 发送 GET 请求得到的结果是一样的(不考虑权限问题)。如果在这个源代码页面上可以搜索到你要内容,则可以按照其规则,通过正则、bs4、xpath 等方式对文本中的数据进行提取。

不过,对于很多异步加载数据的网站,从这个页面上并不能搜到你要的东西。或者因为权限、验证等限制,代码中获取到的结果和页面显示不一致。这些情况我们就需要更强大的开发者工具来帮忙了。

> Elements

在网页上右击鼠标,选择“审查元素”(Inspect),可进入 Chrome 开发者工具的元素选择器。在工具中是 Elements 标签页。

Elements 有几个功能:

  • 选择元素:通过鼠标去选择页面上某个元素,并定位其在代码中的位置。
  • 模拟器:模拟不同设备的显示效果,且可以模拟带宽。
  • 代码区:显示页面代码,以及选中元素对应的路径
  • 样式区:显示选中元素所受的 CSS 样式影响

从 Elements 工具里定位数据比我们前面直接在源代码中搜索要方便,因为你可以清楚看到它所处的元素结构。但这边特别提醒的是:

Elements 里看到的代码不等于请求网址拿到的返回值

它是网页经过浏览器渲染后最终呈现出的效果,包含了异步请求数据,以及浏览器自身对于代码的优化改动。所以,你并不能完全按照 Elements 里显示的结构来获取元素,那样的话很可能得不到正确的结果。

> Network

在开发者工具里选择 Network 标签页就进入了网络监控功能,也就是常说的“抓包”。

这是爬虫所用到的最重要功能。它主要解决两个问题:

  1. 抓什么
  2. 怎么抓

抓什么,是指对于那些通过异步请求获取到的数据,如何找到其来源。

打开 Network 页面,开启记录,然后刷新页面,就可以看到发出的所有请求,包括数据、JS、CSS、图片、文档等等都会显示其中。从请求列表中可以寻找你的目标。

一个个去找会很痛苦。分享几个小技巧:

  • 点击“搜索”功能,直接对内容进行查找。
  • 选中 Preseve log,这样页面刷新和跳转之后,列表不会清空。
  • Filter 栏可以按类型和关键字筛选请求。

找到包含数据的请求之后,接下来就是用程序获取数据。这时就是第二个问题:怎么抓

并不是所有 URL 都能直接通过 GET 获取(相当于在浏览器里打开地址),通常还要考虑这几样东西:

  1. 请求方法,是 GET 还是 POST。
  2. 请求附带的参数数据。GET 和 POST 传递参数的方法不一样。
  3. Headers 信息。常用的包括 user-agent、host、referer、cookie 等。其中 cookie 是用来识别请求者身份的关键信息,对于需要登录的网站,这个值少不了。而另外几项,也经常会被网站用来识别请求的合法性。同样的请求,浏览器里可以,程序里不行,多半就是 Headers 信息不正确。你可以从 Chrome 上把这些信息照搬到程序里,以此绕过对方的限制。

点击列表中的一个具体请求,上述信息都可以找到。

找对请求,设对方法,传对参数以及 Headers 信息,大部分的网站上的信息都可以搞定了。

Network 还有个功能:右键点击列表,选择“Save as HAR with content”,保存到文件。这个文件包含了列表中所有请求的各项参数及返回值信息,以便你查找分析。(实际操作中,我发现经常有直接搜索无效的情况,只能保存到文件后搜索)

除了 Elements 和 Network,开发者工具中还有一些功能,比如:

Sources,查看资源列表和调试 JS。

Console,显示页面的报错和输出,并且可以执行 JS 代码。很多网站会在这里放上招聘的彩蛋(自己多找些知名网站试试)。

但这些功能和爬虫关系不大。如果你开发网站和优化网站速度,就需要和其他功能打交道。这里就不多说了。

总结一下,其实你就记住这几点:

  1. 查看源代码”里能看到的数据,可以直接通过程序请求当前 URL 获取。
  2. Elements 里的 HTML 代码不等于请求返回值,只能作为辅助。
  3. Network 里用内容关键字搜索,或保存成 HAR 文件后搜索,找到包含数据的实际请求
  4. 查看请求的具体信息,包括方法、headers、参数,复制到程序里使用。

理解了这几步,大部分网上的数据都可以拿到,说“解决一半的问题”可不是标题党。

当然咯,说起来轻松几点,想熟练掌握,还是有很多细节要考虑,需要不断练习。但带着这几点再去看各种爬虫案例,思路会更清晰。

如果你想要针对爬虫更详细的讲解和指导,我们的“爬虫实战”课程了解一下,也有面向零基础的入门课程。

课程详情公众号(Crossin的编程教室)里回复 码上行动

════
其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | Python单词表 | 区块链 | 人工智能 | 双11 | 嘻哈 | 爬虫 | 排序算法 | 我用Python | 高考 | 世界杯 | 竞猜 | requests

欢迎搜索及关注:Crossin的编程教室

转载于:https://my.oschina.net/crossin/blog/1842980

爬虫必备工具,掌握它就解决了一半的问题相关推荐

  1. Chrome安装爬虫必备插件:Xpath Helper高效解析网页内容(实测有效)

    Chrome安装爬虫必备插件:Xpath Helper(最新教程) 1. 谷歌浏览器xpath helper插件的安装和使用 2. 谷歌浏览器xpath helper插件的作用 3. 谷歌浏览器xpa ...

  2. Python研发工程师必备工具合集

    Python研发工程师必备工具合集 1.必备工具 2.常用网站 3.学习路线 4.必备技能 5.书籍推荐 6.进阶学习 一.必备工具: 1.Sublime Text 2.Notepad++ 3.Vis ...

  3. 渗透测试 ( 1 ) --- 相关术语、必备 工具、导航、全流程总结、入侵网站思路

    From:https://zhuanlan.zhihu.com/p/401413938 渗透测试实战教学:https://www.zhihu.com/column/c_1334810805263515 ...

  4. 数据工程师生存必备工具!

    Datawhale工具 组件:数据可视化组件 炼丹师在炼丹过程中最头疼的事情是什么? 1.好不容易找到可用数据,但无法直观了解标注质量? 2.想把标注情况可视化展现,却要花费数天分辨千奇百怪的数据格式 ...

  5. Kubernetes 必备工具:2021

    文档翻译自 Kubernetes Essential Tools: 2021[1],篇幅较长,做了部分增删. 介绍 在本文中,我将尝试总结我最喜欢的 Kubernetes[2] 工具,并特别强调最新的 ...

  6. 第四十九期:化繁为简的五种码农必备工具

    如今,开发工具已成为了软件开发过程中必不可少的组成部分.本文将向您介绍当前软件开发市场上颇具影响力的五种化繁为简的码农必备工具. 不知您是否已经发现:那些以任务为中心的软件开发工作,会比独立的研究式开 ...

  7. Web前端开发必备工具推荐

    http://gaohaixian.blog.163.com/blog/static/12326010520114265223489/不管你做前端开发还是网页重构,前端工具都起着非常重要的作用,这里向 ...

  8. 黑苹果入门:必备工具篇

    以下给大家汇总的这些软件工具都是我们在安装使用黑苹果过程中可能会用到的,至于使用方法,在这里我就不做过多介绍了. 本次只提供软件下载地址,不提供使用方法,不知道如何使用软件工具的童鞋,可以在百度翻翻相 ...

  9. MySQL DBA必备工具使用的6大锦囊妙计

    老张我呢不仅是个金庸迷,还是个三国迷.就是喜欢看后期蜀国诸葛亮与魏国司马懿之间的斗智斗勇.各种锦囊妙计的使用,堪称经典.针对管理MySQL数据库这块,张老师也有很多妙计,今后一一给大家介绍.说回三国, ...

最新文章

  1. robot简单功能测试脚本设计(例子)
  2. 接近开关的初步测试 : DF-11N
  3. 大数据如何学习 cda认证_第十届CDA认证考试 LEVEL 1 优秀考生访问录:我是如何备考的?...
  4. Winform开发框架里面使用事务操作的原理及介绍
  5. 查看安装的react-native和react版本
  6. CUBA Platform 7.0.4 发布,企业级应用开发平台
  7. Buuctf(pwn)ciscn_2019_n_8
  8. linux git 推送空文件夹
  9. 每天一个linux命令-用户之间切换
  10. Tomcat配置解析
  11. stokes方程matlab,Navier-Stokes matlab 238万源代码下载- www.pudn.com
  12. 谷歌浏览器打开特殊端口号地址方法
  13. 【技术贴】ppt2003更换图片|更换带有动作特效的图片|替换ppt图片
  14. php doc生成pdf文件怎么打开乱码,phpexcel 导出pdf文件乱码,该如何解决
  15. c/c++实现带图形界面的扫雷游戏
  16. 求:生意参谋 data 破解,最好是用php
  17. VCIP2020:不同尺寸块基于神经网络的帧内预测
  18. 电子传真虚拟化助企业降低成本
  19. Win10安装 PS6 :error16- 踩坑篇
  20. Camtasia2022完整的许可证密钥

热门文章

  1. [转]微服务(Microservice)那点事
  2. eval解析json注意点
  3. ios小项目——新浪微博客户端总结
  4. WCF中常见的几种Host,承载WCF服务的方法详解
  5. 2012年度IT博客大赛50强报道:张世锋
  6. Vue菜鸟之路: 封装上传组件
  7. Hadoop_27_MapReduce_运营商原始日志增强(自定义OutputFormat)
  8. [Hdu3652]B-number(数位DP)
  9. 在Java中使用xpath对xml解析
  10. iOS开发UI篇—UITabBarController简单介绍