Scrapy一个需要使用cookie的网站
我正在用 scrapy 来抓取一个网站,但这个网站需要用到 cookies。我不知道该怎么写指令来使用 cookies 抓取网站的数据。
class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"
]
def parse(self, response):
sel = Selector(response)
sites = sel.HtmlXPathSelector('//ul[@class="directory-url"]/li')
items = []
for site in sites:
item = Website()
item['name'] = site.xpath('a/text()').extract()
item['url'] = site.xpath('a/@href').extract()
items.append(item)
return items
我该怎么把 cookies 正确地添加到这个网址呢?
2 个回答
0
你可以这样添加 cookies
request_with_cookies = Request(url="http://www.example.com",
cookies={'currency': 'USD', 'country': 'UY'})
http://doc.scrapy.org/en/latest/topics/request-response.html#topics-request-response
1
为了进一步解释@omair_77的回答,你可以重写你的小蜘蛛的start_requests
方法,这样就能在小蜘蛛发出的初始请求中添加cookies:
def start_requests(self):
return [Request(url="http://www.example.com",
cookies={'currency': 'USD', 'country': 'UY'})]
这样,你的小蜘蛛第一次发出的请求就会带上这些cookies,而第一次调用你的parse
方法时,会收到这个请求的响应。
http://scrapy.readthedocs.org/en/latest/topics/spiders.html#scrapy.spider.Spider.start_requests