【问题标题】:What is the correct form of work with cookies in scrapy在scrapy中使用cookie的正确形式是什么
【发布时间】:2014-04-25 06:12:12
【问题描述】:

我是个新手,我在一个使用 cookie 的网站中使用 scrapy,这对我来说是个问题,因为我可以在没有 cookie 的网站上获取数据,但是很难获得有 cookie 的网站的数据我。 我有这个代码结构

class mySpider(BaseSpider):
    name='data'
    allowed_domains =[]
    start_urls =["http://...."]

def parse(self, response):
    sel = HtmlXPathSelector(response)
    items = sel.xpath('//*[@id=..............')

    vlrs =[]

    for item in items:
        myItem['img'] = item.xpath('....').extract()
        yield myItem

这很好,我可以使用这种代码结构在没有cookie的情况下获得很好的数据 我发现它是因为我可以在这个 url 中使用 cookie,但我不明白我应该把这段代码放在哪里,然后才能使用 xpath 获取数据

我正在测试这段代码

request_with_cookies = Request(url="http://...",cookies={'country': 'UY'})

但我不知道我可以工作,也不知道这段代码放在哪里, 我把这段代码放到函数解析中,用于获取数据

def parse(self, response):
    request_with_cookies = Request(url="http://.....",cookies={'country':'UY'})

    sel = HtmlXPathSelector(request_with_cookies)
    print request_with_cookies

我尝试将 XPath 与这个带有 cookie 的新 url 一起使用,以便稍后打印这个新的数据抓取 我认为这就像使用没有 cookie 的 url 但是当我运行这个我有一个错误,因为“请求”对象没有属性“body_as_unicode” 使用这些 cookie 的正确方法是什么,我有点迷茫 非常感谢。

【问题讨论】:

    标签: python cookies xpath scrapy scrapy-spider


    【解决方案1】:

    你很亲密! parse() 方法的约定是它yields(或返回一个可迭代的)Items、Requests 或两者的混合。在你的情况下,你应该做的就是

    yield request_with_cookies
    

    您的 parse() 方法将再次运行,并使用通过使用这些 cookie 请求该 URL 产生的 Response 对象。

    http://doc.scrapy.org/en/latest/topics/spiders.html?highlight=parse#scrapy.spider.Spider.parse http://doc.scrapy.org/en/latest/topics/request-response.html

    【讨论】:

      猜你喜欢
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多