python - 在 scrapy 中使用 cookie 的正确形式是什么

标签 python cookies xpath scrapy

我是新手,我在使用 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 的正确方法是什么,我有点迷路了 非常感谢。

最佳答案

你很亲近! parse() 方法的约定是它yield(或返回可迭代)ItemRequest 或混合两者的。在你的情况下,你所要做的就是

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

关于python - 在 scrapy 中使用 cookie 的正确形式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279256/

相关文章:

python - 从列表的 Pandas 列中,如何删除不在另一列列表中的所有值?

python - 每行比较两列 Pandas 行

asp.net - 根据条件在 asp.net 中显示 div

ruby - Xpath:所有节点直到一个节点(Wikiquote.org)

python - 您可以在 Python 中引用自身内部的类吗?

Python 和集体智慧

javascript - 我可以在更改页面时更改脚本中的类名吗

cookies - 可以在Cookie中存储哪些信息?

python - Scrapy Spider 抓取部分内容并留下其他内容

c# - 如何在 C# 中为 XPath 添加命名空间?