首页 > Python基础教程 > Python Scrapy网络爬虫
阅读:11,332
网络爬虫是什么,Scrapy又是什么?
在介绍数据可视化分析时,最后一个示例示范了展示从网络上获取的天气信息。从广义上说,那个例子也属于网络爬虫,程序可以自动获取多个页面中的所有天气信息。如果使用某种技术(如正则表达式、XPath 等)来提取页面中所有的链接(<a.../> 元素),然后顺着这些链接递归打开对应的页面,最后提取页面中的信息,这就是网络爬虫。
既然前面己经介绍了网络爬虫的知识,那么本章还有存在的意义吗?在回答这个问题之前,我们来分析网络爬虫具体要做哪些核心工作:
如果直接使用 Python 内置的 urllib 和 re 模块是否能写出自己的网络爬虫呢?答案是肯定的,只是比较复杂。就像我们要从广州去韶关,走路可以去吗?答案是肯定的,只是比较麻烦。
下面继续分析网络爬虫的核心工作:
现在来回答上面提出的问题,本章有存在的意义吗?当然有,本章并不介绍使用 urllib、re 模块这种简陋的工具来实现正则表达式,而是通过专业的爬虫框架 Scrapy 来实现爬虫。
Scrapy 是一个专业的、高效的爬虫框架,它使用专业的 Twisted 包(基于事件驱动的网络引擎包)高效地处理网络通信,使用 lxml(专业的 XML 处理包)、cssselect 高效地提取 HTML 页面的有效信息,同时它也提供了有效的线程管理。
一言以蔽之,上面列出的网络爬虫的核心工作,Scrapy 全部提供了实现,开发者只要使用 XPath 或 css 选择器定义自己感兴趣的信息即可。
既然前面己经介绍了网络爬虫的知识,那么本章还有存在的意义吗?在回答这个问题之前,我们来分析网络爬虫具体要做哪些核心工作:
- 通过网络向指定的 URL 发送请求,获取服务器响应内容。
- 使用某种技术(如正则表达式、XPath 等)提取页面中我们感兴趣的信息。
- 高效地识别响应页面中的链接信息,顺着这些链接递归执行此处介绍的第 1、2、3 步;
- 使用多线程有效地管理网络通信交互。
如果直接使用 Python 内置的 urllib 和 re 模块是否能写出自己的网络爬虫呢?答案是肯定的,只是比较复杂。就像我们要从广州去韶关,走路可以去吗?答案是肯定的,只是比较麻烦。
下面继续分析网络爬虫的核心工作:
- 向 URL 发送请求,获取服务器响应内容。这个核心工作其实是所有网络爬虫都需要做的通用工作。一般来说,通用工作应该由爬虫框架来实现,这样可以提供更稳定的性能,开发效率更高。
- 提取页面中我们感兴趣的信息。这个核心工作不是通用的!每个项目感兴趣的信息都可能有所不同,但使用正则表达式提取信息是非常低效的,原因是正则表达式的设计初衷主要是处理文本信息,而 HTML 文档不仅是文本文档,而且是结构化文档,因此使用正则表达式来处理 HTML 文档并不合适。使用 XPath 提取信息的效率要高得多。
- 识别响应页面中的链接信息。使用正则表达式可以实现这个核心工作,但是效率太低,使用 XPath 会更高效。
- 多线程管理:这个核心工作是通用的,应该由框架来完成。
现在来回答上面提出的问题,本章有存在的意义吗?当然有,本章并不介绍使用 urllib、re 模块这种简陋的工具来实现正则表达式,而是通过专业的爬虫框架 Scrapy 来实现爬虫。
Scrapy 是一个专业的、高效的爬虫框架,它使用专业的 Twisted 包(基于事件驱动的网络引擎包)高效地处理网络通信,使用 lxml(专业的 XML 处理包)、cssselect 高效地提取 HTML 页面的有效信息,同时它也提供了有效的线程管理。
一言以蔽之,上面列出的网络爬虫的核心工作,Scrapy 全部提供了实现,开发者只要使用 XPath 或 css 选择器定义自己感兴趣的信息即可。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频