如何在Scrapy的parse()
函数中获取请求url?我在start_urls
中有很多urls,其中一些将我的爬虫重定向到主页,因此我有一个空项目。所以我需要像item['start_url'] = request.url
这样的东西来存储这些urls。我在用BaseSpider。
发布于 2015-01-25 15:50:23
传递给parse()的'response‘变量包含您想要的信息。您应该不需要重写任何内容。
例如:(编辑)
def parse(self, response):
print "URL: " + response.request.url
发布于 2015-12-29 11:57:57
request对象可以从response对象访问,因此您可以执行以下操作:
def parse(self, response):
item['start_url'] = response.request.url
发布于 2013-11-20 06:06:03
您需要重写BaseSpider的make_requests_from_url(url)
function以将start_url分配给项目,然后使用Request.meta
special keys将该项目传递给parse
函数
from scrapy.http import Request
# override method
def make_requests_from_url(self, url):
item = MyItem()
# assign url
item['start_url'] = url
request = Request(url, dont_filter=True)
# set the meta['item'] to use the item in the next call back
request.meta['item'] = item
return request
def parse(self, response):
# access and do something with the item in parse
item = response.meta['item']
item['other_url'] = response.url
return item
希望这能有所帮助。
https://stackoverflow.com/questions/20081024
复制相似问题