首页 > 其他分享 >Scrapy 中 Request 的使用

Scrapy 中 Request 的使用

时间:2023-06-24 22:55:48浏览次数:35  
标签:cookies 请求 url request Request item Scrapy 使用

爬虫中请求与响应是最常见的操作,Request对象在爬虫程序中生成并传递到下载器中,后者执行请求返回一个Response对象

一个Request对象表示一个HTTP请求,它通常是在爬虫生成,并由下载执行,从而生成Response

  • 参数

    • url(string) - 此请求的网址

    • callback(callable) - 将使用此请求的响应(一旦下载)作为其第一个参数调用的函数。有关更多信息,请参阅下面的将附加数据传递给回调函数。如果请求没有指定回调,parse()将使用spider的 方法。请注意,如果在处理期间引发异常,则会调用errback。

    • method(string) - 此请求的HTTP方法。默认为'GET'。可设置为"GET", "POST", "PUT"等,且保证字符串大写

    • meta(dict) - 属性的初始值Request.meta,在不同的请求之间传递数据使用

    • body(str或unicode) - 请求体。如果unicode传递了,那么它被编码为 str使用传递的编码(默认为utf-8)。如果 body没有给出,则存储一个空字符串。不管这个参数的类型,存储的最终值将是一个str(不会是unicode或None)。

    • headers(dict) - 这个请求的头。dict值可以是字符串(对于单值标头)或列表(对于多值标头)。如果 None作为值传递,则不会发送HTTP头.一般不需要

    • encoding: 使用默认的 'utf-8' 就行

    • dont_filter:是否过滤重复的URL地址,默认为 False过滤

    • cookie(dict或list) - 请求cookie。这些可以以两种形式发送。

      • 使用dict:
request_with_cookies = Request(url="http://www.sxt.cn/index/login/login.html",)

      •  使用列表:
 request_with_cookies = Request(url="http://www.example.com",
                cookies=[{'name': 'currency',
                    'value': 'USD',
                    'domain': 'example.com',
                    'path': '/currency'}])

后一种形式允许定制 cookie的属性domain和path属性。这只有在保存Cookie用于以后的请求时才有用

request_with_cookies = Request(url="http://www.example.com",
                cookies={'currency': 'USD', 'country': 'UY'},
                meta={'dont_merge_cookies': True})

将附加数据传递给回调函数

请求的回调是当下载该请求的响应时将被调用的函数。将使用下载的Response对象作为其第一个参数来调用回调函数

def parse_page1(self, response):
  item = MyItem()
  item['main_url'] = response.url
  request = scrapy.Request("http://www.example.com/some_page.html",
               callback=self.parse_page2)
  request.meta['item'] = item
  return request


def parse_page2(self, response):
  item = response.meta['item']
  item['other_url'] = response.url
  return item

        

标签:cookies,请求,url,request,Request,item,Scrapy,使用
From: https://www.cnblogs.com/jiangjiayun/p/17501840.html

相关文章

  • [WePE]使用Dism++备份系统是报错“磁盘空间不足”
    造冰箱的大熊猫@cnblogs2023/6/24问题:使用安装了WePE的优盘启动计算机,进入WinPE环境后使用Dism++备份操作系统时,提示“磁盘空间不足”。原因:WePE会创建一个卷标为WEPE、盘符为X、容量为8GB的虚拟分区,用于存放WinPE系统。Dism++在进行操作系统备份时,先将数据写入X:\Windows\temp......
  • 使用libavcodec将mp3音频文件解码为pcm音频采样数据【[mp3float @ 0x561c1ec49940] He
    一.打开和关闭输入文件和输出文件想要解决上面提到的问题,我们需要对mp3文件的格式有个大致了解,为了方便讲解,我这里画了个示意图:ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。Frame一系列的帧,个数由文件大小和帧长决定ID3V1包含了作者,作曲,专......
  • 57 KVM工具使用指南-制作 LibcarePlus 热补丁
    57KVM工具使用指南-制作LibcarePlus热补丁57.1概述LibcarePlus支持如下方式制作热补丁:手动制作通过脚本制作手动制作热补丁的过程繁琐,对于代码量较大的工程,例如QEMU,手动制作热补丁极其困难。建议使用LibcarePlus自带脚本一键式地生成热补丁文件。57.2手动制作本节......
  • 上位机DM地址使用EXCEL中Left和Right涵数快速配置
    32位地址配置。首先在P2确定采集开始地址Excel带标记(字母/字符)下拉为奇(偶)数递增输入函数,下拉即可 ......
  • if、else、else if使用方法
    (文章目录)前言本文章主要介绍选择判断if、else、elseif一、只有一种情况格式:if(条件){code:代码块} 当满足条件时执行代码块,不满足条件时不执行。区间条件写法:12<a<15(false)a>12&&a<15(ture)&&代表的是且,||带表或。二、两种情况格式:if(条件){code......
  • nacos 基础使用
    依赖<!--配置中心--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--服务注册/发现--><dependency><groupId......
  • [java学习] Spring的分页插件的使用
    概述:SSM集成常会使用到分页,Spring中提供了方便实用的分页插件  第一步:在Mybatis配置文件(SqlMapConfig.xml)中配置插件组件:<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://myb......
  • Scrapy 中 CrawlSpider 使用(二)
     LinkExtractor提取链接创建爬虫scrapygenspider爬虫名域名-tcrawlspiderfromscrapy.linkextractorsimportLinkExtractorfromscrapy.spidersimportCrawlSpider,RuleclassXsSpider(CrawlSpider):name="爬虫名"allowed_domains=["域名"]......
  • Scrapy 中 CrawlSpider 使用(一)
    创建CrawlSpiderscrapygenspider-tcrawl爬虫名(allowed_url)Rule对象Rule类与CrawlSpider类都位于scrapy.contrib.spiders模块中classscrapy.contrib.spiders.Rule(link_extractor,callback=None,cb_kwargs=None,follow=None,proces......
  • Java 一维数组的使用
    Java一维数组的使用1.一维数组的定义在不知道数组内容可以直接使用下面的定义方法:int[]arr=newint[数组个数];或intarr[]=newint[数组个数];在知道数组内容可以使用如下:int[]arr={data1,data2,data.....};2.数组的传递数组的传递与其他基本类型的值传递不同,......