用尼泊尔语抓取网页内容
我正在浏览一个网站,这个网站的网页地址是尼泊尔语的,也就是非英语的字体。我该如何为任何爬虫设置start_urls(我正在使用scrapy)?有没有什么编码技巧可以用?直接从浏览器复制粘贴这些网址可以吗?
更新:我还需要进一步解析某个网页上得到的链接。当然,这些链接也是非英语的。谢谢...
1 个回答
1
符合 RFC 3986 标准的URL会使用UTF-8编码和URL百分号编码。尼泊尔语使用的是天城文,这种文字在Unicode中可以完美表示,因此可以用UTF-8进行编码。
你可以看看尼泊尔维基百科来获取一些例子。那个特定的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'