Python Scrapy未将内容长度添加到FormRequest标头

Python Scrapy未将内容长度添加到FormRequest标头,python,cookies,request,scrapy,Python,Cookies,Request,Scrapy,这与以下问题有关: 在这里,我认为有两个相互关联的问题: 1)scrapy不会将内容长度添加到标题。 header = {#'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0', 'X-Requested-With': 'XMLHttpRequest', 'Host': 'www.zomato.com',

这与以下问题有关:

在这里,我认为有两个相互关联的问题:

1)scrapy不会将内容长度添加到标题。

header = {#'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0',
           'X-Requested-With': 'XMLHttpRequest',
           'Host': 'www.zomato.com',
           'Accept': '*/*',
           'Referer': 'https://www.zomato.com',
           'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
           'dont_filter':'True' }
header = {#'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0',
       'X-Requested-With': 'XMLHttpRequest',
       'Host': 'www.zomato.com',
       'Accept': '*/*',
       'Referer': 'https://www.zomato.com',
       'Content-Length':'57'
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
       'dont_filter':'True' }
发送到服务器的实际标头不包含内容长度

我相信正是出于这个原因,回复中没有包含预期值。 注意:取而代之的是,我看到在将cookie发送到服务器之前,scrapy会自动将cookie添加到标题中

要手动排序,我尝试手动设置内容长度。

header = {#'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0',
           'X-Requested-With': 'XMLHttpRequest',
           'Host': 'www.zomato.com',
           'Accept': '*/*',
           'Referer': 'https://www.zomato.com',
           'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
           'dont_filter':'True' }
header = {#'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:44.0) Gecko/20100101 Firefox/44.0',
       'X-Requested-With': 'XMLHttpRequest',
       'Host': 'www.zomato.com',
       'Accept': '*/*',
       'Referer': 'https://www.zomato.com',
       'Content-Length':'57'
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
       'dont_filter':'True' }
但是我现在得到这个请求的400错误请求

我尝试通过添加到scrapy.cfg来禁用cookies以进行尝试

COOKIES_ENABLE = False
DOWNLOADER_MIDDLEWARES ={'scrapy.downloadermiddlewares.cookies.CookiesMiddleware':None,
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware':None,
}
但我仍然看到scrapy在请求中添加了饼干

另外,我在scrapy.cfg中添加了以下内容

COOKIES_ENABLE = False
DOWNLOADER_MIDDLEWARES ={'scrapy.downloadermiddlewares.cookies.CookiesMiddleware':None,
'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware':None,
}
又没运气了

有人能帮我吗?自过去3天以来,一直在努力解决此问题:(


非常感谢。

您能针对此服务器代码运行spider并捕获标题吗

import BaseHTTPServer

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    def do_POST(self):
        print(self.headers)
        self.send_response(200)
        self.end_headers()

def run():
    server_address = ('', 8001)
    httpd = BaseHTTPServer.HTTPServer(server_address, Handler)
    httpd.serve_forever()

if __name__ == '__main__':
    run()

您能捕获发送的实际标题并发布它们吗?当然。我将返回此请求和响应标题。在此之前,我可以尝试,我已使用Selenium Webdriver解决了此问题。我成功触发了单击事件,Webdriver为我完成了所有操作。我现在掌握了驱动程序中呈现的新html,并可以在驱动程序中删除所需的标记。但我会尽快向您提供结果以满足您的要求。