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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • HTTP基本原理 URI、URL、URN(Uninform Resource) URI(Identifier):统...
    GHope阅读 2,183评论 2 26
  • 参考资料:1.用python开发爬虫https://www.gitbook.com/book/germey/pyt...
    井底蛙蛙呱呱呱阅读 3,417评论 0 8
  • 声明:本文讲解的实战内容,均仅用于学习交流,请勿用于任何商业用途! 一、前言 强烈建议:请在电脑的陪同下,阅读本文...
    Bruce_Szh阅读 12,859评论 6 28
  • 硕大的光晕坠弯了路灯的杆 影子用长短描述世事的变幻 一座楼房就是一个墓碑 城市杀死灵魂造出傀儡 网络像神经连接每一...
    西村1983阅读 152评论 3 4
  • 还是记起来了,可是脑海中一片空白,想不到有什么诉说的。 有点像以前写作文,想写的写不出来,总感觉得语出惊人,得立意...
    行百里者半九十阅读 156评论 0 0