通过上一个章节的讲解,我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术的清单以及这些技术涉及到的标准库和第三方库,稍后我们会一一介绍这些内容。
下载数据 - urllib / requests / aiohttp。
解析数据 - re / lxml / beautifulsoup4 / pyquery。
缓存和持久化 - pymysql / sqlalchemy / peewee/ redis / pymongo。
生成数字签名 - hashlib。
序列化和压缩 - pickle / json / zlib。
调度器 - 多进程(multiprocessing) / 多线程(threading)。
页面解析
几种解析方式的比较
解析方式 对应的模块 速度 使用难度 备注
正则表达式解析 re 快 困难 常用正则表达式
在线正则表达式测试
XPath解析 lxml 快 一般 需要安装C语言依赖库
唯一支持XML的解析器
CSS选择器解析 bs4 / pyquery 不确定 简单
说明:BeautifulSoup可选的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。
使用正则表达式解析页面
如果你对正则表达式没有任何的概念,那么推荐先阅读《正则表达式30分钟入门教程》,然后再阅读我们之前讲解在Python中如何使用正则表达式一文。
爬取逻辑:
-
发送请求,访问豆瓣官网
-
使用BeautifulSoup,对访问到的网页内容进行初始化
-
获取所有url里带有/question的内容
-
将<a>标签里 href中的url进行输出
下面是使用pyquery来抽取知乎首页问答Url连接的案例:
喜欢点下关注,你的关注是我写作的最大支持