我知道html中有一个命令:var x = document.domain;
获取域名,但我如何在Scrapy中实现这一点,以便获取域名?
答案 0 :(得分:10)
您可以response.url
:
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)