我是新手,我在使用 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
(或返回可迭代)Item
、Request
或混合两者的。在你的情况下,你所要做的就是
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/