Python网络爬虫02——爬虫入门前的准备

定义:

网络爬虫(Web Spider),又被称为网页蜘蛛,是一种按照一定的规则,自动地抓取网站信息的程序或者脚本。

简介:

网络蜘蛛是一个很形象的名字。如果把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过 网页的链接地址来寻找网页,从 网站某一个页面开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接 地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。

爬虫流程:

1、设定抓取目标(种子页面/起始页面)并获取网页。

2、当服务器无法访问时,按照指定的重试次数尝试重新下载页面。

3、在需要的时候设置用户代理或隐藏真实IP,否则可能无法访问页面。

4、对获取的页面进行必要的解码操作然后抓取出需要的信息。

5、在获取的页面中通过某种方式(如正则表达式)抽取出页面中的链接信息。

6、对链接进行进一步的处理(获取页面并重复上面的动作)。

7、 将有用的信息进行持久化以备后续的处理。

使用的模块/库:

1、 下载数据 - urllib / requests / aiohttp

2、 解析数据 - re / lxml/requests_html / beautifulsoup4(bs4)/ pyquery

3、 缓存和持久化 - pymysql / sqlalchemy / peewee/ redis / pymongo

4、 生成数字签名 - hashlib

5、 序列化和压缩 - pickle / json / zlib

6、 调度器 - 进程(multiprocessing) / 线程(threading) / 协程(coroutine)

爬虫注意事项:

1、处理相对连接,有时我们从网页中获取的连接不是一个完整的绝对连接,而是一个相对连接,这种情况下将其URL后缀进行拼接( urllib.parse中的urljoin()函数可以完成此项操作 )

2、设置代理服务。有些网站会限制访问区域, 例如美国的Netflix屏蔽了很多国家的访问),有些爬虫需要隐藏自己的身份,在这 种情况下可以设置使用代理服务器,代理服务器有免费(如西刺代理、快代理)和付费两种(如讯代理、阿布云代理),付费的一般稳定性和可用性都更好,可以通过urllib.request中的ProxyHandler来为请求设置代理。

3、限制下载速度, 如果我们的爬虫获取网页的速度过快,可能就会面临被封禁或者产生“损害动产”的风险(这个可能会导致吃官司且败诉),可以在两次下载之间添加延时从而对爬虫进行限速。

4、避免爬虫陷阱。 有些网站会动态生成页面内容,这会导致产生无限多的页面(例如在线万年历通常会有无穷无尽的链接)。可以通过记录到达当前页面经过了多少个链接(链接深度)来解决该问题,当达到事先设定的最大深度时爬虫就不再像队列中添加该网页中的链接了。

5、SSL相关问题。 在使用urlopen打开一个HTTPS链接时会验证一次SSL证书,如果不做出处理会产生错误提示“SSL: CERTIFICATE_VERIFY_FAILED”,可以通过以下两种方式加以解决:

方法一:使用未经认证的上下文


 Python

mport ssl

request = urllib.request.Request(url='...', headers={...}) 
context = ssl._create_unverified_context() 
web_page = urllib.request.urlopen(request, context=context)                 

方法二:设置全局取消证书认证


Python

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

你可能感兴趣的:(Python网络爬虫02——爬虫入门前的准备)