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