0
刮板的邏輯流程:將從XML提要中提取的文章鏈接放入名爲self.raw_html的列表中。那麼下面的[簡化]方法被調用來從給定的物品過濾掉容器中的物品都在,並刪除text:Web刮板返回某些文章的NoneType對象
def fetch_article_contents(self):
for article in self.raw_html:
self.css_selector_type == 'class':
soup = article.find(self.html_element,
self.css_selector)
soup = soup.get_text()
self.article_html.append(soup)
return self.article_html
這非常適用於大多數的飼料,但兩個顯着的例外(Forbes和谷歌官方博客)失敗,出現以下消息時get_text()被調用:在調試
AttributeError: 'NoneType' object has no attribute 'get_text'
我的第一個合乎邏輯的步驟是看到了什麼返回NoneType對象,所以我soup = soup.get_text()
前右側插着print type(soup)
。我發現:
<class 'bs4.element.Tag'> (25 times, condensed to save space)
<type 'NoneType'>
這也令我奇怪,因爲目前有獲取福布斯XML飼料時,由LEN(self.raw_html)類時initalized驗證了self.raw_html
29篇。
的谷歌官方博客的回報:
<class 'bs4.element.Tag'> (just once this time)
<type 'NoneType'>
,並在現實中有25件取出物品。
我遇到了什麼問題?謝謝!
對不起,我應該已經添加到OP。 self.html_element和self.css_selector是傳遞給該類的參數,它告訴刮板要取出的HTML元素和類。它不可能是這樣的,因爲該方法在返回NoneType並停止之前成功地完成了一些文章(由顯示)。 –
您假設所有文章都是相同的,並且他們都是有你正在尋找的元素 –
啊,這是有道理的,謝謝,我會稍後報告結果:) –