Facebook 抓取工具 'NoneType' 对象没有属性 'find' 而 get_post

Facebook scraper 'NoneType' object has no attribute 'find' while get_post

虽然我使用 facebook_scraper 库通过此代码从 Facebook 页面获取 post。

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

它与少数 post 一起工作,然后出现这样的错误。

Traceback (most recent call last):
  File ".\main.py", line 2, in <module>
    for post in get_posts('ThaiPBSFan', pages = 50):
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\facebook_scraper.py", line 75, in _get_posts
    yield _extract_post(article)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\facebook_scraper.py", line 102, in _extract_post
    text, post_text, shared_text = _extract_text(article)
  File "C:\Users\admin\AppData\Local\Programs\Python\Python37-32\lib\site-packages\facebook_scraper.py", line 137, in _extract_text
    nodes = article.find('p, header')
AttributeError: 'NoneType' object has no attribute 'find'

这是什么问题,我该如何解决。

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

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

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

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

我有同样的问题,但只有在使用最新版本的软件包 (0.1.12) 时才会出现。尝试使用旧版本的软件包。例如,我尝试了 0.1.4 版本,它运行良好。要安装它,请写:

pip install facebook_scraper==0.1.4

在您的终端中。