初识爬虫

357次阅读
没有评论
初识爬虫

url-scheduler-downloader-spider-pipeline
spider—-需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回 Scheduler(循环上述步骤)
      —-需要保存的数据,它们则被送到 Item Pipeline 那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地   方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
Spider部分
Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。

其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成item 的方法。
为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义一些属性:

name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。
提取Item

Selectors选择器简介:Scrapy使用了一种基于 XPath 和 CSS 表达式机制: Scrapy Selectors
Selector有四个基本的方法:

xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。
css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表.
extract(): 序列化该节点为unicode字符串并返回list。
re(): 根据传入的正则表达式对数据进行提取,返回unicode字符串list列表。
简单例子:
/html/head/title: 选择HTML文档中 <head> 标签内的 <title> 元素
/html/head/title/text(): 选择上面提到的 <title> 元素的文字
//td: 选择所有的 <td> 元素
//div[@class=”mine”]: 选择所有具有 class=”mine” 属性的 div 元素
Selector选择器
response 拥有一个 selector 属性, 该属性是以该特定 response 初始化的类Selector 的对象。 您可以通过使用 response.selector.xpath() 或 response.selector.css() 来对response 进行查询。
在scrapy快捷方式:response.xpath() 或 response.css()
response.xpath(‘//title’)
response.xpath(‘//title’).extract()
response.xpath(‘//title/text()’)
response.xpath(‘//title/text()’).extract()
response.xpath(‘//title/text()’).re(‘(w+):’)
提取数据
response.xpath(‘//ul/li’)
网站的描述:

response.xpath(‘//ul/li/text()’).extract()
网站的标题:

response.xpath(‘//ul/li/a/text()’).extract()
以及网站的链接:

response.xpath(‘//ul/li/a/@href’).extract()
每个 .xpath() 调用返回selector组成的list,因此我们可以拼接更多的 .xpath() 来进一步获取某个节点。

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历,XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointer 都构建于 XPath 表达之上。

pipeline部分
pipeline功能:—–通过spider爬取到所需的数据存放在item后,item可以发送到item pipeline 进行进一步的处理(通过几个组件-Python class),如是否需要pipeline进行进一步处理,或者丢弃,或者不再处理它。

item pipeline 使用场景
清除HTML数据
验证爬取的数据(检查是否包含某一字段)
检查是否有重复数据(duplicate),然后去重
把爬取的数据(scraped item)存入数据库(database)中

item pipeline 组件是一些python类,必需实现以下几个方法:

process_item(self, item, spider) #对item中的数据进行处理,返回data字典,item对象,或者抛出其他异常,丢弃重复数据等

open_spider(self, spider)  #当spider开始工作时,可以调用,如打开文件,打开数据库等等。。。,否则报错

close_spider(self, spider) #当关闭spider时调用,如关闭文件,关闭数据库等等。。。

from_crawler(cls, crawler)  # 如果存在的话,从crawler创建一个pipeline实例。它必须返回一个新的pipeline实例。Crawler对象提供scrapy所有组件的接口,像setting,signals。item  pipeline 可以使用它们而且可以把item pipeline实现这些功能写入scrapy中

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-11-01发表,共计2334字。
新手QQ群:570568346,欢迎进群讨论 Python51学习