【问题标题】:adding headers to scrapy?将标题添加到scrapy?
【发布时间】:2021-01-30 18:26:07
【问题描述】:

我在 python/scrapy 上编写了以下用于网页抓取的代码:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.crawler import CrawlerProcess
import requests

class HousesearchspiderSpider(scrapy.Spider):
    name = "housesearchspider"
    user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
    download_delay = 10.0
    start_urls = [
        'https://www.website.com/filter1/filter2/',
    ]

        for detail in response.css('div.search-result-content'):

            yield {'price':detail.css('div.search-result-info search-result-info-price ::text').get(),
                   'size': detail.css('ul.search-result-kenmerken ::text').get(),
                   'postcode': detail.css('small.search-result-subtitle ::text').get(),
                   'street': detail.css('h2.search-result-title ::text').get(),
                   }

        next_page = response.css('li.next a::attr(href)').get()

        if next_page is not None:
            next_page = response.urljoin(next_page)
            sleep(5)
            yield scrapy.Request(next_page, callback=self.parse)

但是我使用那个 user_agent 被阻止了,我想添加一个 header 和一个 yield scrapy.Request(url, headers = headers) 来模拟与真实浏览器完全相同的请求(有点像下面的漂亮汤代码可以,但在scrapy中):

response = get(url, headers=headers)

我找不到太多关于在 scrapy 中包含此标头的确切位置的文档/示例?有人可以帮忙吗?

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    对于您的start_urls 请求,您可以使用settings.pyUSER_AGENTDEFAULT_REQUEST_HEADERS

    对于每个request,你可以从你的代码中使用yield,你可以使用headers关键字:

    yield scrapy.Request(next_page, headers=you_headers, callback=self.parse)
    

    【讨论】:

      【解决方案2】:

      scrapy.Request 现在包含一个 cookies 参数,不要为它们使用标头,因为它们不会被中间件拾取。

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

      https://docs.scrapy.org/en/latest/topics/request-response.html#scrapy.http.Request

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-22
        • 2013-05-12
        • 2016-10-04
        • 2016-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多