2017-05-31 25 views
-1

我有沒有元素的問題,我如果加入,來測試這一點,但它仍然沒有工作:美麗的湯錯誤「NoneType」的對象,如果

soup = BeautifulSoup(htmlpage, "lxml") 
element = soup.find(None, "div", class_='12345').find('a') 

if element is not None: 
    print "Your element is: " + element.text 

else: 
    print "No element"  

錯誤:

page = soup.find(None, "div", class_='12345').find('a') 
AttributeError: 'NoneType' object has no attribute 'find' 
+1

您正在'soup.find(None,「div」,class _ ='12345')'調用'.find()'。你需要測試第一個結果。 –

回答

1

你正在做發現電話:

element = soup.find(None, "div", class_='12345').find('a') 

調用失敗,並且因爲您在那裏尋找錯誤的東西而失敗,您將爲標記名傳遞None,並將"div"作爲屬性映射傳遞。這將永遠不會工作,所以它總是返回None,該對象沒有.find屬性。

你需要修復的電話,然後測試div試圖找到一個嵌套a標記之前發現:

element = None 
parent = soup.find("div", class_='12345') 
if parent is not None: 
    element = parent.find('a') 

我不能讓它是多麼複雜,我會使用一個CSS selector相反,與soup.select_one()方法:

element = soup.select_one('div.12345 a') 
if element is not None: 
    # ... 

的CSS選擇器將返回第一個a元素是div標籤的子元素與類12345