爬虫相关技术,真的只有这么简单?(下)

发表于:2021-10-22 09:54

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:psspider    来源:思否

#
爬虫
分享:
  开源爬虫的框架、程序
  这里列举一些比较有名的爬虫项目,有些我用过,有些没用过。我平时工作环境是 .net ,对python爬虫也略有研究。
  1.Scrapy , 非常有名的Python爬虫项目,用户数非常多,文档做的也很棒。
  2.Nutch ,Java的,它其实是一个搜索引擎项目,包含了搜索和Web爬虫两个部分。 没用过。
  3.NCrawler, .net 写的。 架构和代码都很棒,建议想学习 .net 爬虫的同学,多研究。可惜没用文档
  Scrapy 额外点评, 在我大概读了下它的源码后,我觉得 Scrapy 在一些地方还是很不错的,比如回调模型。  但是它太臃肿了。对于一个垂直爬虫框架来说的,有很多不必要的设计,比如下载器、中间件。
  暂且就列这几个, 欢迎各位同学补充!

  除了学习爬虫框架,还需要学习哪些技术
  1. HTTP协议
  主要的包括GET、POST方法。 各种类型Header的了解 ,包括Referer、User-Agent、Cookie、Accept、Encoding、Content-Type等等。
  了解各种HTTP状态码的含义,常见的状态码比如 200表示正常; 301表示重定向,同时会返回新的URL;404表示页面不存在;5xx表示服务器端错误
  了解Cookie的构成,原理。

  2. HTML
  HTML基础知识,了解HTML常用元素, 比如A、IMG等等。
  了解URL的构成,路径、参数,绝对路径、相对路径。
  编码相关,HTML charset, HTML EncodeDecode,URL EncodeDecode,JS EncodeDecode。

  3. 浏览器相关
  HTTP协议、HTML其实都是浏览器相关的。
  了解浏览器,从你输入一个URL,到看到完整的网页,中间发生了什么。相关知识点: URL、DNS、HTTP、Web Server、HTML、JS、CSS、DOM树、JS引擎等等。
  其中DOM树、JavaScript相关知识对于爬虫来说还是相当重要的。有些时候需要反解JS。

  4. 抓包技术
  常用抓包工具,比如Fiddler、浏览器的F12、Wireshark、Microsoft Network Monitor。后面2个属于TCP级别,用的较少。
  通过学习抓包工具使用,可以帮你更好的学习HTTP协议、浏览器相关知识。
  这里强烈、重点推荐 Fiddler。
  大概说下几个常用功能吧, 抓包、保存包数据、Composer(构造HTTP请求)、AutoResponser(自动响应HTTP)、FidderScript 通过编写脚本定制程序、修改HTTP包。
  如果你是 .net 技术相关的,建议反编译下,读下源代码,HTTP协议你就搞定啦。它还提供了 FiddlerCore 库让你可以编写自己抓包程序。

  反爬虫技术
  有爬虫,当然就有反爬虫技术啦。 他们俩一直处于一个对抗、共存的状态。 这是一个非常有意思的过程,对于一些爬虫从业、爱好者来说。
  通常来说,只要你想爬,没有爬取不到的数据,就看你的资源和技术了。 不论是网站还是APP
  下面列举下常见几种反爬虫技术:
  ·useragent、referer 等常见反爬虫技术(低级)
  ·需要登录 cookie,
  ·封 IP ,限制 IP 访问频率
  ·验证码,包括图像验证码、拖动验证码等等
  ·浏览器端 Javascript 混淆 ajax 参数
  ·其他如 token、随机数
  没关系,虽然反爬技术多,但是只是增加你的成本而已。 不过网站也是有代价的,有些反爬会损害用户体验的。

  有意思的事情:
  许多大的互联网公司,会同时有爬虫部门和反爬虫部门。哈哈哈,是这样的,爬虫部门用来爬别人家的数据,
  反爬部门用来屏蔽别人家的爬虫咯!  举个例子,就像之前的58和赶集(不过现在他们合并了)。

  有意思的项目:
  一步采集  通过算法,计算出一个网页中列表、分页地址。类似于 正文识别 算法。
  这个技术对于需要做大量垂直爬虫的人来说,就很有用图。不用再编写XPath、正则表达式。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号