2014-05-20 31 views
0

我正在瀏覽一個網站,其網頁的網址中有尼泊爾語,即非英文字體。我如何爲任何蜘蛛提供start_urls(我正在使用scrapy)?有沒有任何種類的編碼技術?並從瀏覽器的url直接複製粘貼嗎?在尼泊爾(非英文)使用網址搜索網頁

更新: 我需要進一步解析我在某些網頁上獲得的鏈接。當然這些鏈接也不是英文的。 謝謝...

+0

哪個版本的Python?您是否真的嘗試複製和粘貼網址? – jonrsharpe

+0

版本2.7。是的,我嘗試複製粘貼,它似乎並沒有工作。但我不確定。我也更新了我的問題。謝謝 – Nabin

+1

URL以UTF8編碼,例如,請參閱[以Python解碼UTF-8](http://stackoverflow.com/q/16566069)。你的尼泊爾網址將沒有什麼不同。 –

回答

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已編碼的,但如果是這樣,而不是:

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') 

演示:

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'))) 
>>> 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' 
+2

Thanks @攝影作品:-) – Nabin

+0

現在,當將獲得的鏈接分配給item ['link']時,我得到以下內容: 'Request'對象不支持項目分配 它與非英語url ? – Nabin

+0

@Nabin:對不起,我不知道scrapy內部的工作原理。然而,這是一個完全獨立的問題。如果在這個問題上堆棧溢出沒有重複,請隨時提出有關該問題的新問題。 –