【Scrapy框架实现发送POST请求】

版权声明:本文为博主原创文章,各路大佬可放心转载。 https://blog.csdn.net/qq_41964425/article/details/86412250

实现发送POST请求

在爬虫文件中,我们一般不需要手动的对start_urls列表中的起始url发送请求,因为爬虫文件中的爬虫类继承了父类SpiderSpider类中的start_requests方法会自动向起始url列表中的所有url发起请求。

但需要注意的是,start_requests方法发起的是GET请求,如果我们想发起POST请求,则需要在子类中重写该方法。

下面我们将重写start_requests方法,来实现POST请求的发送:

# -*- coding: utf-8 -*-
import scrapy


class Test01Spider(scrapy.Spider):
    name = 'test01'
    start_urls = ['https://fanyi.baidu.com/']

    def parse(self, response):
        print(response)  # <200 https://fanyi.baidu.com/sug>

    # 重写父类方法,实现发送POST请求
    def start_requests(self):
        post_url = 'https://fanyi.baidu.com/sug'  # 百度翻译
        data = {'kw': '好'}  # 你要翻译的内容
        yield scrapy.FormRequest(url=post_url, formdata=data, callback=self.parse)
        # scrapy.FormRequest():用于发起POST请求
        # 参数callback用于指定回调函数,即解析的方法

五大核心组件工作流程

五大核心组件工作流程图

1. 引擎 Scrapy
用于处理整个系统的数据流,触发事务(框架核心)。

2. 调度器 Scheduler
用于接收引擎发过来的请求,加入队列中,并在引擎再次发起请求的时候返回。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址。

3. 下载器 Downloader
用于下载网页内容,并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高校的异步模型上的)。

4. 爬虫 Spiders
爬虫主要是干活的,用于从特定的网页中爬取自己想要的信息,即所谓的实体(Item)。用于也可以从中提取出链接,让Scrapy继续抓取下一个页面。

5. 管道 Pipeline
负责处理爬虫从网页中抽取的实体,主要功能是持久化实体、验证实体的有效性、清楚不需要的信息。当页面被爬虫解析后,将发送到项目管道,并经过几个特定的次序处理数据。

猜你喜欢

转载自blog.csdn.net/qq_41964425/article/details/86412250
今日推荐