原文: http://blog.gqylpy.com/gqy/364
"实现发送POST请求
在爬虫文件中,我们一般不需要手动的对start_urls列表中的起始url发送请求,因为爬虫文件中的爬虫类继承了父类Spider,Spider类中的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/sug']
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': '好'} # 你要翻译的内容
for url in self.start_urls:
yield scrapy.FormRequest(url=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
负责处理爬虫从网页中抽取的实体,主要功能是持久化实体、验证实体的有效性、清楚不需要的信息。当页面被爬虫解析后,将发送到项目管道,并经过几个特定的次序处理数据。
"
原文: http://blog.gqylpy.com/gqy/364
原文地址:https://www.cnblogs.com/bbb001/p/11373960.html
时间: 2024-10-08 15:42:19