2

我正在学习如何使用scrapy。尤其是在处理 cookie 时很容易出错。问题是我找不到大量可以帮助我完成这项工作的示例、教程或文档。如果有人能提供任何材料,我将不胜感激。为了向您展示我有多迷茫,下面的代码应该表明我缺乏理解;

from scrapy.spider import BaseSpider
from scrapy.http.cookies import CookieJar

class sasSpider(BaseSpider):
name = "sas"
allowed_domains = ["sas.no"]
start_urls = []

def parse(self, response):
    Request("http://www.sas.no", meta={'cookiejar': response.meta['cookiejar']}, callback = self.nextfunction)

def nextfunction(self, response):
    cookieJar = response.meta.setdefault('cookiejar', CookieJar())
    cookieJar.extract_cookies(response, response.request)

    for cookie in CookieJar:
        open('cookies.html', 'wb').write(cookie)
4

2 回答 2

1

如果要手动添加 cookie,只需将它们传入:

yield Request("http://www.sas.no", cookies={
    'foo': 'bar'
}, callback=self.nextfunction)

它们将保留在以后的所有请求中。start_requests如果您希望他们在所有请求中都存在,请记住在回调中执行此操作。

于 2013-06-06T13:02:02.823 回答
0

如果您只想附加预定义的 cookie,也许覆盖make_requests_from_url是一个更好的主意:

class MySpider(scrapy.Spider):

  def make_requests_from_url(self, url):
    return scrapy.Request(url=url, 
                          cookies={'currency': 'USD', 'country': 'UY'})
于 2015-12-04T06:44:05.977 回答