一、scrapy简介
二、关于中间件
作用: 爬虫中间件主要负责处理从引擎发送到爬虫的请求和从爬虫返回到引擎的响应。这些中间件在请求发送给爬虫之前或响应返回给引擎之前可以对它们进行处理。
- 功能:
- 常见的爬虫中间件:
- 常见的下载中间件:
三、scrapy的三个内置对象
-
作用: scrapy.Item 是一个简单的容器对象,
用于封装存储爬取到的数据
。每个 scrapy.Item 对象都代表了网站上的一个特定数据项。 -
使用: 在 Scrapy 爬虫中,你可以定义一个继承自 scrapy.Item 的类,
定义这个类的属性来表示要提取的字段。这样,当你从页面中提取数据时,可以将提取到的数据存储在 scrapy.Item 对象中
。 -
示例:
import scrapy
class MyItem(scrapy.Item):
title = scrapy.Field()
url = scrapy.Field()
-
作用: scrapy.Request 对象
用于指示 Scrapy 下载某个URL,并在下载完成后返回一个 scrapy.Response 对象
。 -
使用: 在爬虫中,
你可以创建 scrapy.Request 对象,指定要访问的URL、回调函数、请求方法、请求头等信息
,然后通过调用这个对象,将请求添加到爬虫的调度队列中
。 -
示例:
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
def start_requests(self):
urls = ['http://example.com/page1', 'http://example.com/page2']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
# 处理响应的逻辑
pass
import scrapy
class MySpider(scrapy.Spider):
name = 'myspider'
def start_requests(self):
urls = ['http://example.com/page1']
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
# 使用 response.xpath 或 response.css 提取数据
title = response.xpath('//h1/text()').get()
这三个内置对象是构建 Scrapy 爬虫时非常重要的组件。scrapy.Item 用于封装爬取到的数据,scrapy.Request 用于定义要爬取的URL和请求参数,scrapy.Response 用于处理从服务器返回的响应。通过巧妙地使用这些对象,你可以有效地构建和组织你的爬虫逻辑。
四、scrapy的入门使用
pip/pip3 install scrapy
- 创建项目:
scrapy startproject mySpider
- 创建一个爬虫:
1.进入刚才的项目路径
2.执行生成命令:scrapy genspider <爬虫名字> <允许爬取的域名>
例如:scrapy genspider baidui baidu.com
3.执行后就会在myspider/spider下,生成一个baidu.py
,这就是我们的爬虫文件
- 提取数据:
根据网站结构在spider中(即baidu.py文件)实现数据采集相关内容- 保存数据:
使用pipeline进行数据后续处理和保存
管道文件
import json
class ItcastPipeline():
# 爬虫文件中提取数据的方法每yield一次item,就会运行一次
# 该方法为固定名称函数
def process_item(self, item, spider):
print(item)
return item
#值越小越先运行
ITEM_PIPELINES = {
'myspider.pipelines.ItcastPipeline': 400
}
- 运行爬虫项目
scrapy crawl baidu
原文地址:https://blog.csdn.net/cristianoxm/article/details/134740085
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_50298.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!