scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动

创建项目

在你的工作目录下直接使用命令:

复制代码
scrapy startproject scrapytutorial

运行后创建了一个名为scrapytutorial的爬虫工程

创建spider

在爬虫工程文件内,运行以下命令:

复制代码
scrapy genspider quotes

创建了名为quotes的爬虫

修改爬虫代码,实现自己想要的爬虫逻辑

启动爬虫

在爬虫项目目录下,运行:

复制代码
scrapy crawl quotes

即可运行爬虫

Spider

在scrapy中,网站的链接配置抓取逻辑解析逻辑都是在spider内配置。

start_requests

分析以下简单的爬虫代码:

python 复制代码
import scrapy

class HttpbinspiderSpider(scrapy.Spider):
    # 定义 Spider 的名称
    name = "httpbinspider"
    
    # 设置允许爬取的域名
    allowed_domains = ["www.httpbin.org"]
    
    # 定义起始 URL
    start_uri = 'https://www.httpbin.org/get'

    # 定义 Spider 的起始请求
    def start_requests(self):
        # 使用循环生成多个请求,这里生成了 1 到 5 的 offset 参数
        for offset in range(1, 6):
            url = self.start_uri + f'?offset={offset}'
            
            # 生成请求,并指定回调函数为 parse
            # 同时将 offset 通过 meta 传递给回调函数
            yield scrapy.Request(url, callback=self.parse, meta={'offset': offset})

    # 定义数据处理逻辑
    def parse(self, response):
        # 打印 offset 和响应文本
        print(f"===============offset {response.meta['offset']}=========")
        print(response.text)
        
        # 打印 meta 数据,这里包含了在 start_requests 中传递的 offset
        print(response.meta)

这里我重写了start_requests方法,使用scrapy.Request构造了5个GET请求,并使用yield方法发送到下载器用于下载,同时指定了响应的解析回调函数,并通过meta参数传递offset参数。

复制代码
简要说明:
name:定义 Spider 的名称。
allowed_domains:定义允许爬取的域名。
start_uri:定义起始 URL。
start_requests:生成起始请求,使用循环生成多个带有不同 offset 参数的请求,每个请求的回调函数是 parse。
parse:处理响应的回调函数,打印 offset、响应文本和 meta 数据。

spider发送GET请求

使用scrapy.Request(url=url)

scrapy.Request(method='GET',url=url)

发送GET请求,查询参数建议拼接在url内。

spider发送POST请求

相关推荐
Data_Journal1 天前
使用 AutoScraper 进行网页抓取:分步教程
大数据·开发语言·数据库·python·scrapy
Data_Journal1 天前
如何将网页抓取用于机器学习
大数据·开发语言·数据库·python·scrapy
圆脸脸lxj8 天前
scrapy框架开发中pipelines模块将数据写入记事本中
scrapy
圆脸脸lxj8 天前
scrapy框架开发中pipelines模块将数据写入mysql数据库中
scrapy
深蓝电商API10 天前
Scrapy 架构源码解析
爬虫·scrapy
IPdodo_13 天前
2026年爬虫代理 IP 选择指南:从可用率、延迟到成本验收
网络协议·tcp/ip·scrapy·http·https·beautifulsoup·httpx
q5673152320 天前
Curl 报 CONNECT tunnel failed, response 6xx:排查思路全解
数据库·网络协议·scrapy·http·中间件·http代理
Data_Journal21 天前
Playwright vs Selenium:哪个是最佳无头浏览器
开发语言·python·scrapy·microsoft·编辑器
Data_Journal22 天前
如何使用 Python 抓取 Google Flights:分步指南
大数据·开发语言·数据库·python·scrapy
Data_Journal23 天前
用于网页抓取的 Node-unblocker
大数据·开发语言·数据库·python·scrapy