【爬虫】Python爬虫框架Scrapy
标签(空格分隔):【爬虫】
1 Scrapy 简介
作为一个网络用户,我们经常会需要从网站上获得数据,使用类似Excel的程序进行存储,以便下次离线访问数据或者执行计算。作为一名开发者,则经常需要整合多个数据源的数据,但获得和抽取数据又十分复杂。
因此,我们需要学习爬虫技术。
Scrapy 是一个网络框架,它可以从各种数据源中抓取数据。Scrapy 可以帮助用户以有效的方式抽取大量数据,使用Scrapy,只需要进行简单的设置,就可以完成其他爬虫框架中复杂的工作。
2 HTML 和 XPath 简介
为了从网页中抽取信息,必须对网页的结构有一定的了解。
首先考虑以下步骤:我们在浏览器输入URL, 计算机将URL以及cookies等其他数据构成一个请求,用于发送到URL指向的服务器;随后,服务器端进行回应,向浏览器发送回一个HTML页面(当然,也有可能返回其他格式,例如XML、JSON,但我们只关注HTML);接着,HTML转换成浏览器内部的树状表示形式:文档对象模型(DOM, Document Object Model);最后,基于一些布局规则渲染内部,达成屏幕上现实的效果。
为了让以上过程更加容易理解,接下来我们详细来看其中的一些名词。
-
URL: 即统一资源定位符。
对于客户而言,URL主要分为两部分:第一部分通过域名系统(DNS, Domain Name System)来在网络上定位合适的服务器,例如在浏览器中发送https://mail.google.com/mailu/0/#inbox
时,将会创建对mail.google.com
的DNS请求,用来确定合适的服务器IP地址,如173.194.71.83
, 因此,从本质上来看,https://mail.google.com/mailu/0/#inbox
被翻译为https://173.194.71.83/mailu/0/#inbox
; URL的第二部分用来确定发给服务端的请求,例如一张图片,一个文档等。 -
HTML文档:服务器端读取URL后,回应一个HTML文档,该文档本质上就是一个文本文件,我们可以用TextMate、NotePad等软件打开它。但和大多数文档不同,HTML文档具有指定的格式,我们可以在浏览器中查看网页源代码来查看HTML文件。
同时,在HTML文件中,有一些特殊的字符:, 等见括号中间的文本被称为标签, 其中是起始标签,是结束标签,标签之中的所有东西被称为HTML元素。 -
树表示法:HTML只是本文,而树表示法是浏览器内存中的对象,
DOM表示法具有跨平台、语言无关等特点,被大多数浏览器支持。 -
框模型:HTML和树表示法通过框模型来映射到屏幕上。从某种意义上说,屏幕上的图像是原始HTML文档的二维表示。
-
XPath:为了访问HTML信息,需要做很多字符串匹配、在文档中搜索标签、处理特殊情况等工作。但又有XPath语言,这些工作便都不是必需的。