2013-06-05 60 views
2

我正在学习如何使用scrapy。尤其是使用cookie处理的scrapy。问题是我找不到很多可以帮助我完成这项工作的示例,教程或文档。如果任何人可以提供任何材料,我会非常感激。为了向你展示我是多么迷茫,下面的代码应该表明我缺乏理解;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) 
+2

什么是不工作? Scrapy自动处理cookie。 – Blender

+3

@Blender谢谢你看我的帖子!我想手动处理cookie。原因是我想抓取的网站使用javascript来触发GET请求访问我想要抓取的页面所需的cookie。 – Rookie

回答

1

如果你想手动添加饼干,只是通过他们:

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

他们会被保存在今后所有申请。只要记住要在start_requests回调中执行此操作,如果您希望它们在所有请求中都在那里。

0

如果你只是想与预定义的饼干重视,也许覆盖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'})