scrapy发送POST请求

发送post请求

可以使用 yield scrapy.FormRequest(url, formdata, callback)方法发送POST请求。

如果希望程序执行一开始就发送POST请求,可以重写Spider类的start_requests(self) 方法,并且不再调用start_urls里的url。

 1 class mySpider(scrapy.Spider):
 2     # start_urls = ["http://www.example.com/"]
 3
 4     def start_requests(self):
 5         url = ‘http://www.renren.com/PLogin.do‘
 6
 7         # FormRequest 是Scrapy发送POST请求的方法
 8         yield scrapy.FormRequest(
 9             url = url,
10             formdata = {"email" : "xxx", "password" : "xxx"},
11             callback = self.parse_page
12         )
13     def parse_page(self, response):
14         # do something

注意:表单数据的提交使用formdata,方法之间的传参依然使用meta,例如:

class mySpider(scrapy.Spider):
    # start_urls = ["http://www.example.com/"]

    def start_requests(self):
        url = ‘http://www.renren.com/PLogin.do‘

        # FormRequest 是Scrapy发送POST请求的方法
        yield scrapy.FormRequest(
            url = url,
            formdata = {"email" : "xxx", "password" : "xxxxx"},
            callback = self.parse_page,
        meta = {"key1":"value1","key2":"value2"}
        )
    def parse_page(self, response):
    value1 = response.meta["key1"]
        # do something

原文地址:https://www.cnblogs.com/wanglinjie/p/9246613.html

时间: 2024-07-30 15:55:22

scrapy发送POST请求的相关文章

scrapy发送post请求获取cookie

from scrapy.http import Request,FormRequest def start_requests(self): return [Request('http://www.com/login.htm', meta={'cookiejar': 1}, callback=self.parse)] def parse(self, response): url = 'http://www.com/login.htm' data = { #这里放data数据 } yield For

scrapy基础知识之发送POST请求:

可以使用 yield scrapy.FormRequest(url, formdata, callback)方法发送POST请求. 如果希望程序执行一开始就发送POST请求,可以重写Spider类的start_requests(self) 方法,并且不再调用start_urls里的url. class mySpider(scrapy.Spider): # start_urls = ["http://www.example.com/"] def start_requests(self):

scrapy 发post请求

可以使用 yield scrapy.FormRequest(url, formdata, callback)方法发送POST请求. 如果希望程序执行一开始就发送POST请求,可以重写Spider类的start_requests(self) 方法,并且不再调用start_urls里的url. class mySpider(scrapy.Spider): # start_urls = ["http://www.example.com/"] def start_requests(self):

【Scrapy框架之发送POST请求】 򊘮

原文: http://blog.gqylpy.com/gqy/364 "实现发送POST请求 在爬虫文件中,我们一般不需要手动的对start_urls列表中的起始url发送请求,因为爬虫文件中的爬虫类继承了父类Spider,Spider类中的start_requests方法会自动向起始url列表中的所有url发起请求. 但需要注意的是,start_requests方法发起的是GET请求,如果我们想发起POST请求,则需要在子类中重写该方法. 下面我们将重写start_requests方法,来实现

scrapy入门(二)请求传参和中间件

scrapy的请求传参 作用 : 实现深度爬取 使用场景 : 爬取的数据没有在同一张页面 例如, 爬取电影首页全部电影的详情页信息 #请求传参: 让Request将一个数据值(字典)传递给回调函数 #在第一页中将item对象的第一个属性赋值,然后通过请求传参将item对象传过去 #手动发送get请求: model_index = [3,4,6,7,8] for index in model_list: li =li_list[index] model_url = li.xpath('xxxxxx

Ajax发送post请求

//创建Ajax对象(兼容处理) function createXHR() { var xhr = null; if(window.XMLHttpRequest) { xhr = new XMLHttpRequest(); } else if(window.ActiveXObject) { xhr = new ActiveXObject('Microsoft.XMLHTTP'); } return xhr; } //发送post请求 function request(){ xhr.open('P

每天一个linux命令13之curl发送http请求

一.get请求 curl "http://www.baidu.com"  如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地 curl -i "http://www.baidu.com"  显示全部信息 curl -l "http://www.baidu.com" 只显示头部信息 curl -v "http://www.baidu.com" 显示get请求全过程解析 wget "http://www.ba

jmeter 发送http请求,并把获取到的请求的订单信息保存到文件中

有一个任务,需要频繁发送订单请求,并分析订单请求中有没有存在重复订单号,思路是用jmeter 发送http请求,使用正则表达式获取到订单号,并把订单号和线程号作为参数提供给java请求,在java请求中把订单号写到包括有线程号的命名文件中.完成出来的样子是这样的 步骤如下: 1.Jmeter 发送http请求 1) 新建HTTP信息头管理器 2) 新建HTTP请求 2,在下单过后返回部分信息如下:"msg":"下单成功","result":&qu

nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验证身份,流程如下: 流程如下: 1.客户端获取用户id,并向服务器请求token(注意这里的服务器不是融云的服务器,而是客户端的服务端) 2.客户端的服务端接收到token请求后,向融云的服务器请求token 3.融云服务器接受到token请求,返回token给客户端的服务端. 4.客户端的服务端接