2017-07-24 103 views
1

我一直在試圖建立一個網站刮板收集的名稱,價格和網站上的對象的區,但不能用它做任何事情,因爲它提出了一個錯誤:屬性始終沒有

AttributeError: 'NoneType' object has no attribute 'strip'.

我該怎麼辦?幫幫我!另外我如何去第二個div?當我做districtcontainers = souped.find_all("div",{"class":"announcement-block-link")然後districtcontainers[0].div.div,它給出0輸出。如何解決這個問題?非常感謝您的關注和答覆:)。

import urllib.request as uReq 
from bs4 import BeautifulSoup as soup 


url = uReq.urlopen("https://www.bazaraki.com/real-estate/houses-and-villas-rent/larnaka-district-larnaca/") 
html = url.read() 
souped = soup(html,"html.parser") 
containers = souped.find_all("div",{"class":"announcement-block-text-container"}) 
districtcontainers = souped.find_all("div",{"class":"announcement-block__location"}) 
for container in containers: 
    for districtcontainer in districtcontainers: 
     title = container.a 
     price = container.p 
     district = districtcontainer 
     print("{}:\n Costs: \n District:{}".format(title.string.strip(),price.string.strip(),district.string.strip())) 
+1

試試'title.text'或'title.content'? –

+0

嘗試,它說EOF錯誤,但 –

+0

它的工作原理,但它返回每一個項目像百次 –

回答

1

首先,你最後的print語句只有兩個{},但你必須按以下格式調用三個變量,它只是一個錯字所以這不是問題的原因。

其次,它看起來像你的變量之一是通過調用souped對象賦值爲None。只需檢查頁面的編碼,以確保您正在查找的值位於正確的位置。如果您要求不在場的部分而不是提出錯誤,BeautifulSoup將返回None。

由於它看起來像運行打印調用時引發的異常,只需檢查以確保您的三個調用爲您的變量賦值返回值。

至於獲得頁面中的第二個div,您可能想要查看next_sibling方法調用。

+0

你能幫我用.div.div的東西嗎? .next_sibling返回「\ n」。由於此原因,我無法解析任何頁面 –

+0

您可以在單個實例上使用多個next_sibling,因此可能需要多個next_sibling才能訪問實際文本或HTML元素的下一個實例。 我建議next_sibling和可能的next_element,因爲他們確保返回一個值,而不是創建另一個Nonetype錯誤。 – Vorboto