Scrapy一个需要使用cookie的网站

0 投票
2 回答
935 浏览
提问于 2025-04-18 04:02

我正在用 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

撰写回答