Facebook抓取器"NoneType"对象在get_post时没有属性"find"



当我使用facebook_scraper库从带有此代码的facebook页面获取帖子时。

from facebook_scraper import get_posts
for post in get_posts('ThaiPBSFan', pages = 50):
print(post['text'][:100])

它只需要很少的帖子,然后就会出现这样的错误。

Traceback (most recent call last):
File ".main.py", line 2, in <module>
for post in get_posts('ThaiPBSFan', pages = 50):
File "C:UsersadminAppDataLocalProgramsPythonPython37-32libsite-packagesfacebook_scraper.py", line 75, in _get_posts
yield _extract_post(article)
File "C:UsersadminAppDataLocalProgramsPythonPython37-32libsite-packagesfacebook_scraper.py", line 102, in _extract_post
text, post_text, shared_text = _extract_text(article)
File "C:UsersadminAppDataLocalProgramsPythonPython37-32libsite-packagesfacebook_scraper.py", line 137, in _extract_text
nodes = article.find('p, header')
AttributeError: 'NoneType' object has no attribute 'find'

那么问题出在哪里,我该怎么解决呢?

从回溯来看,facebook_scraper似乎没有返回有效的post;这可能是因为页面上没有更多的帖子。

因此,您可以使用try/except块来捕获此异常,即:

try:
for post in get_posts('ThaiPBSFan', pages=50):
print(post['text'][:100])
except AttributeError:
print("No more posts to get")

这并不理想,因为一旦没有更多的帖子可检索,您最好能够获得更具体的异常,但它应该适用于您的情况。小心你的try子句内部的代码——如果在其他地方引发AttributeError,你会错过它。

我遇到了同样的问题,但只是在使用最新版本的包(0.1.12(时。请尝试使用旧版本的包。例如,我尝试了0.1.4版本,效果很好。要安装它,请写:

pip install facebook_scraper==0.1.4

在您的终端。

最新更新