01引言

AffettoIris 2023-2-24 2,424 2/24

什么是爬虫

通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程。浏览器就是一个原始的、天然的基于爬虫的工具,搜索引擎就是爬虫。

爬虫带来的风险

爬虫就像水果刀,法律不禁止,但捅人就犯法了。

  1. 爬虫干扰了被访问网站的正常运营

  2. 爬虫抓取了收到法律保护的特定类型的数据或信息

如何避免进入局子呢?

  1. 时常的优化自己的程序,避免干扰被访问网站的正常运行

  2. 在使用,传播爬取到的数据时,审查抓取到的内容,如果发现了涉及到用户信息、隐私、商业机密等敏感内容需要及时停止爬取或传播

爬虫在使用场景中的分类

  1. 通用爬虫

    很多搜索引擎的抓取系统的重要组成部分,特点是抓取一整张页面数据。

  2. 聚焦爬虫

    建立在通用爬虫的基础上,抓取的是页面中指定的局部内容(例如只要评论区的评论内容)。

  3. 增量式爬虫

    检测网站中数据更新的情况,之会抓取网站中最新更新的数据。

爬虫相关常识

Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。urllib的api比较繁琐,不如requests简便。

大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而它最让人惊喜的还是它超高的性能,让你可以将爬虫工程化、模块化。

爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB 就OK。MongoDB 可以方便你去存储一些非结构化的数据,比如各种评论的文本,图片的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。

当爬取基本数据已经不是问题了,你的瓶颈会集中到爬取海量数据的效率。这个时候,相信你会很自然地接触到一个很厉害的名字:分布式爬虫。分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。其中Redis 则用来存储要爬取的网页队列,也就是任务队列。

反爬机制

门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。

反反爬策略

爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网站的数据。

robots.txt协议

90年代初搜索引擎和网站达成共识建立了君子协议robots.txt协议,约定网站哪些内容可以被爬,哪些内容不可以爬。君子协议,直译,不防小人,只是口头约定上不可以爬哪些协议,希望你遵守,但是没有技术上的措施。如果你要爬网站在robots.txt协议列举的不能爬的数据,一定要偷偷的哦!

查看robots.txt协议

网站域名/robots.txt

例如https://www.taobao.com/robots.txt https://www.sohu.com/robots.txt

Disallow后的目录是不可爬取的,Allow后的目录则可爬:

01引言

http协议

常用请求头信息

User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/109.0 请求载体的身份标识
Connection keep-alive / close 请求完毕后是断开连接还是保持连接?。

常用的响应头信息

content-type image/x-icon / 字符串 / json等等 响应数据的类型

https协议

http的数据交互中是不加密的,而https的数据是加密的。安全的超文本传输协议。

加密方式

- THE END -

AffettoIris

10月16日16:06

最后修改:2023年10月16日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论