使用Python中的模塊facebook_scraper我想提取Facebook帖子評論的文本來對某個頁面進行情緒分析。
通過以下內置函式的用法get_posts,
from facebook_scraper import get_posts
import pandas as pd
for post in get_posts('PAGE_NAME', extra_info=True, pages=50, options={"comments": True}):
post_entry = post
fb_post_df = pd.DataFrame.from_dict(post_entry, orient='index')
fb_post_df = fb_post_df.transpose()
post_df_full = post_df_full.append(fb_post_df)
print(post['post_id'] ' get')
可以將帖子資訊抓取到如下fb_post_df所示的資料框中(僅包含相關列的壓縮版本,因為函式回傳 df 包含 50 列):
| post_id | 文本 | ... | 評論完整 |
|---|---|---|---|
| 12345 | '帖子的文本' | ... | [{'comment_id':'12345','comment_url':'https://facebook.com/12345','commenter_id':'12345','commenter_url':無,'commenter_name':'Jane Doe',' commenter_meta':無,'comment_text':'這件我需要,評論文本','comment_time':2022-02-23 10:01:38,'comment_image':無,'comment_reactors':[],' comment_reactions':無,'comment_reaction_count':無,'回復':[]}] |
列dtypecomments_full 的 是一個物件。
我嘗試使用 pandasfrom_dict生成一個僅由評論文本組成的新資料框,但它似乎無法將列的內容識別為字典 - 因為它是一個字典串列(如果有意義的話)。
請注意,如果帖子沒有評論,則該列可以為空,在這種情況下,該列的內容如下所示:
[]
uj5u.com熱心網友回復:
串列理解應該可以解決問題:
post_df_full['comments_full'].apply(lambda x: [y['comment_text'] for y in x] if x else 'no comment')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/447775.html
上一篇:通過不同大小的陣列廣播
