用尼泊尔语抓取网页内容

0 投票
1 回答
623 浏览
提问于 2025-04-18 07:04

我正在浏览一个网站,这个网站的网页地址是尼泊尔语的,也就是非英语的字体。我该如何为任何爬虫设置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'

撰写回答