2014-05-09 82 views
0

我得到這個錯誤:美麗的湯錯誤:NameError:名稱 '的htmlText' 沒有定義

NameError: name 'htmltext' is not defined 

它來自下面的代碼:

from bs4 import BeautifulSoup 
import urllib 
import urllib.parse 

url = "http://nytimes.com" 

urls = [url] 
visited = [url] 

while len(urls) > 0: 
     try: 
      htmltext = urllib.urlopen(urls[0]).read() 
     except: 
      print(urls[0])  

     soup = BeautifulSoup(htmltext)  
     urls.pop(0) 

     print(soup.findAll('a',href = true)) 

回答

1

在Python 3.x中,您必須導入urllib.request而不是urllib

htmltext = urllib.urlopen(urls[0]).read() 

到:於是,線路更改

htmltext = urllib.request.urlopen(urls[0]).read() 

最後,改變trueTrue

+0

如果'try'塊失敗並且'except'塊被執行,那麼使用'htmltext'參數調用'BeautifulSoup'會導致問題。也許將其餘的代碼添加到'try'塊? –

+0

你說得對,可能最好包括更多的錯誤處理,以防萬一,例如,url無效。就我而言,我推薦的這些改變對於這個特殊情況是有效的,但我同意它可以進一步改進。 – huu

+0

謝謝大家。這真的很有幫助,我假設美麗的湯安裝不正確,但我現在看到,Python的語法可能會很棘手。再次感謝。 – user3621271