我正在访问一个网站,其网页上有尼泊尔语网址,即非英文字体。如何为任何蜘蛛提供 start_urls (我为此目的使用scrapy)?那有什么编码技术吗?从浏览器直接复制粘贴的网址是否有机会?
更新 我需要进一步解析我在某个网页上获得的链接。当然,这些链接也是非英语的。 谢谢......
答案 0 :(得分:1)
符合RFC 3986的网址将使用UTF-8和URL Percent Encoding进行编码。尼泊尔语使用Devanagari script,它在Unicode中完全可以表示,因此可以用UTF-8编码。
查看Nepali Wikipedia的示例。该特定URL是UTF-8和URL百分比编码的一个很好的例子:
http://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A5%8D%E0%A4%AF_%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0
%E0%A4%AE
转义系列是百分比编码的UTF-8字节。页面的HTML源代码应该已经编码了这些URL,但如果它们看起来像这样:
http://ne.wikipedia.org/wiki/मुख्य_पृष्ठ
您可以使用以下方法对路径部分进行编码:
import urlparse, urllib
parts = urlparse.urlsplit(u'http://ne.wikipedia.org/wiki/मुख्य_पृष्ठ')
parts = parts._replace(path=urllib.quote(parts.path.encode('utf8')))
encoded_url = parts.geturl().encode('ascii')
演示:
>>> import urlparse, urllib
>>> parts = urlparse.urlsplit(u'http://ne.wikipedia.org/wiki/मुख्य_पृष्ठ')
>>> parts = parts._replace(path=urllib.quote(parts.path.encode('utf8')))
>>> parts.geturl().encode('ascii')
'http://ne.wikipedia.org/wiki/%E0%A4%AE%E0%A5%81%E0%A4%96%E0%A5%8D%E0%A4%AF_%E0%A4%AA%E0%A5%83%E0%A4%B7%E0%A5%8D%E0%A4%A0'