如何使用Scrapy获取域名?

时间:2015-08-13 17:38:09

标签: python html scrapy

我知道html中有一个命令:var x = document.domain;获取域名,但我如何在Scrapy中实现这一点,以便获取域名?

3 个答案:

答案 0 :(得分:10)

您可以response.url

extract the domain name
from urlparse import urlparse

def parse(self, response):
    parsed_uri = urlparse(response.url)
    domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
    print domain

答案 1 :(得分:4)

对于Python3,对“ from”和“ print”进行了两个非常小的更改。 alecxe的答案对Python2有好处。

此外,对于Scrapy的CrawlSpider,将上方的“ parse”名称更改为其他名称,因为CrawlSpider本身使用了“ parse”。

from urllib.parse import urlparse

def get_domain(self, response):
    parsed_uri = urlparse(response.url)
    domain = '{uri.scheme}://{uri.netloc}/'.format(uri=parsed_uri)
    print(domain)
    return domain

然后您就可以使用它作为OP的示例

x = get_domain

或者就我而言,我想将该域传递给Scrapy的CrawlSpider规则的LinkExtractor的allow_domains。 ew这会将爬网限制到该域。

rules = [ 
    Rule( 
        LinkExtractor( 
            canonicalize=True, 
            unique=True,
            strip=True,
            allow_domains=(domain)
        ), 
        follow=True, 
        callback="someparser" 
    ) 
]  

答案 2 :(得分:0)

尝试:

_rl = response.url
url = _rl.split("/")[2]

print (url)