首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >解析中的Scrapy get请求url

解析中的Scrapy get请求url
EN

Stack Overflow用户
提问于 2013-11-20 04:07:28
回答 4查看 50.9K关注 0票数 52

如何在Scrapy的parse()函数中获取请求url?我在start_urls中有很多urls,其中一些将我的爬虫重定向到主页,因此我有一个空项目。所以我需要像item['start_url'] = request.url这样的东西来存储这些urls。我在用BaseSpider。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-25 15:50:23

传递给parse()的'response‘变量包含您想要的信息。您应该不需要重写任何内容。

例如:(编辑)

代码语言:javascript
复制
def parse(self, response):
    print "URL: " + response.request.url
票数 92
EN

Stack Overflow用户

发布于 2015-12-29 11:57:57

request对象可以从response对象访问,因此您可以执行以下操作:

代码语言:javascript
复制
def parse(self, response):
    item['start_url'] = response.request.url
票数 17
EN

Stack Overflow用户

发布于 2013-11-20 06:06:03

您需要重写BaseSpider的make_requests_from_url(url) function以将start_url分配给项目,然后使用Request.meta special keys将该项目传递给parse函数

代码语言:javascript
复制
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

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20081024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档