当我使用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
在您的终端。