Scrapy框架
框架: 就是一个半成品。 作用: 提高了项目的开发效率
-
Scrapy的架构设计
由5部分组成 1) engine(引擎): 它是数据的指挥官,负责控制其它部分的 2) scheduler(调度器): 负责将engine提供的url排成一个队列(去重) 3) spider(爬虫): 由程序员自己写的代码放在spider文件夹中。主要的功能就是HttP Response的解析(提取数据),将提取出来的数据传递给引擎。 4) Downloader(下载器): 负责跟URL对应的服务器(server)进行通信,并获取返回的内容,传递给engine 5) item pipeline(管道): 负责将engine传递出来的数据,进行处理(保存)。
注意在网页中提取数据主要用的是xpath方法
-
xpath语法
表达式 | 描述 |
---|---|
// | 从匹配选择的当前节点(html中的一个标签)选择文档中的节点,而不考虑他们的位置 |
[] | 筛选列表中的元素(可以对属性值进行限制) |
标签的名字(nodename) | 选择此节点的所有子节点 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
xpath中内置的方法
text() 取出元素内的文本信息
##直接打印response中的信息(利用Response对象独有的属性body)
# print(response.body)
## response 是HtmlResponse类对象
# print(type(response))
## 利用Response类自带的xpath方法筛选信息,返回的是SelectorList
##类,SelectorList内置了一个方法extract该方法返回的是一个列表
# infos = response.xpath("//tr[@class='even']/td/a/text()")
## 查看利用xpath方法筛选出来的信息的类型
#print(type(infos))
## 利用Response类自带的xpath方法筛选信息,返回的是SelectorList
##类,SelectorList内置了一个方法extract该方法返回的是一个列表
infos = response.xpath("//tr[@class='even']/td/a/text() | //tbody/tr[@class='odd']/td/a/text()").extract()
## 查看extract方法返回的数据类型以及结果
print(type(infos))
print(infos)