2009-12-12 51 views
7

Here in Google App Engines我得到這個代碼,將有助於其網址提取任何網頁的HTML代碼:爲什麼建議爲什麼從Google App引擎導入urlfetch?

from google.appengine.api import urlfetch 
url = "http://www.google.com/" 
result = urlfetch.fetch(url) 
if result.status_code == 200: 
doSomethingWithResult(result.content) 

我不明白一兩件事這裏(在許多其他事情,其實)在此代碼中從google.appengine.api導入urlfecth? Python自己沒有這個命令嗎?

回答

5

google.appengine.api是一個包含Google的urlfetch類版本的庫。引用from the manual

網址提取服務使用效率 和縮放目的谷歌的 網絡基礎設施。

Python在其標準庫中也有url檢索類,但那些不能使用App Engine內可用的基礎結構。

總之google.appengine.api urlfetch功能更強大,但是使用Pythons自己的urllib也沒什麼阻礙,這也在我上面鏈接的手冊頁中描述過。

+0

感謝您的解釋和鏈接 – brilliant 2009-12-12 16:13:11

+2

如果您使用httplib或urllib appengine它也使用谷歌的網絡基礎設施。 iirc他們被添加爲urlfetch的包裝,應該或多或少地作爲他們的python stdlib表親:) – tosh 2009-12-12 16:49:52

+0

我明白了。謝謝。 – brilliant 2009-12-12 17:11:43

16

Python具有用於提取URL的urllib和httplib等庫,但在App Engine上,所有請求都必須通過自定義urlfetch庫。 App Engine包含urllib和httplib的存根,導致它們在內部使用urlfetch,但如果您有選擇,則直接使用urlfetch會更加高效和靈活。

+1

謝謝你,尼克,這個解釋。 – brilliant 2009-12-12 16:17:56

+0

來源?是否由於安全原因,他們不允許您在不使用網址提取的情況下進行網絡通話? – irwinb 2012-08-18 01:27:12

+5

@irwinb來源:我在App Engine團隊工作了4年多。原因是不受限制的套接字訪問的安全性影響,以及在不直接與外部世界通信的計算機上運行的應用程序所產生的實際問題。 – 2012-08-22 10:03:29