2016-12-02 41 views
-1

我想編寫的代碼,需要的網站,並跳過前20個字符,打印下一個100Unhashable型「片」

這是我的代碼至今:

i = 0 
while i <len(urls): 
    html = urllib.request.urlopen(urls[i]) 
    bsobject = BeautifulSoup(html.read(), "html.parser")  
    print(bsobject.body[20:120]) 
    i+=1 

我運行它,它給我的錯誤「類型錯誤:unhashable類型:‘片’」

任何幫助表示讚賞:)

+2

'bsobject.body'是一個對象,爲了讓它的文本做類似'bsobject.body.string [20:120]' –

+1

'bsobject.body'是一個BeautifulSoup'Tag'對象,而不是一個字符串。它表示文檔正文的解析結構,而不僅僅是一系列字符。 – user2357112

+1

對你的循環發表評論。一個更爲pythonic的循環將是'url for url:'。那麼你根本不需要'我'。 – CAB

回答

0
for url in urls: 
    html = urllib.request.urlopen(url) 
    bsobject = BeautifulSoup(html.read(), "html.parser") 
    print(str(bsobject.body)[20:121]) 

這段代碼起作用,我不知道爲什麼,但確實如此。

+0

上面的註釋回答了爲什麼'bsobject.body'是BeautifulSoup標籤對象而不是字符串。通過'str()' - 它,你創建了一個字符串,然後你可以用'[20:121]'切片。 –

相關問題