网络爬虫以及Scrapy的介绍?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
网络爬虫
是指程序可以自动获取多个页面中的所有信息。如果使用某种技术(如正则表达式、XPath 等)来提取页面中所有的链接(<a.../> 元素),然后顺着这些链接递归打开对应的页面,最后提取页面中的信息,这就是网络爬虫。
我们来分析网络爬虫具体要做哪些核心工作:
通过网络向指定的 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 选择器定义自己感兴趣的信息即可。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。