爬虫---scrapy结构介绍及response的属性和方法-scrapy_092_58tc
Scrapy是一个用于创建Web爬虫的开源和跨平台的Python框架。它的设计目的是提取结构化数据,即Web页面上的数据。
Scrapy的主要组件包括:
- 引擎(Engine):用来处理整个系统的数据流处理,负责数据在不同组件之间的流动。
- 调度器(Scheduler):用来接收引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址)的优先队列, 由它来决定下一个要抓取的网址是什么.
- 下载器(Downloader):用于下载网页内容,并将网页内容返回给爬虫。
- 爬虫(Spiders):爬虫是主要做事情的组件,用于解析Downloader返回的响应(Response),从中提取Item(即提取的数据)和新的请求。
- 项目管道(Item Pipeline):负责处理爬取的数据,如清理数据、验证数据、持久化数据(例如存储到数据库)。
- 下载器中间件(Downloader Middlewares):对Scrapy的请求和响应进行处理。
- 爬虫中间件(Spider Middlewares):对爬虫的响应和请求进行处理。
Response对象包含了一个网页的内容及其相关信息,常用的属性和方法有:
- url:获取该response的请求的URL。
- status:获取HTTP状态码。
- headers:获取响应头。
- body:获取响应体(字节字符串)。
- text:获取响应体(Unicode字符串)。
- encoding:获取编码方式。
- request:获取这个响应对应的请求。
例如,以下代码展示了如何在Scrapy爬虫中使用这些属性和方法:
import scrapy
class MySpider(scrapy.Spider):
name = 'example.com'
start_urls = ['http://www.example.com']
def parse(self, response):
# 提取响应的URL
print('Response URL:', response.url)
# 获取HTTP状态码
print('Status:', response.status)
# 获取响应头
print('Headers:', response.headers)
# 获取响应体(字节字符串)
print('Body:', response.body)
# 获取响应体(Unicode字符串)
print('Text:', response.text)
# 获取编码方式
print('Encoding:', response.encoding)
# 获取这个响应对应的请求
print('Request:', response.request)
以上代码是一个Scrapy爬虫的简单例子,它会打印出给定网页的URL、状态码、头部、正文、文本内容、编码方式和请求信息。这些属性和方法对于理解和分析爬虫所获取的数据是非常有用的。
评论已关闭