練習


In [1]:
import os
import requests
import pandas as pd

from datetime import datetime

In [2]:
# 透過 Graph API 觀察文章 ID 與 token
article_id = '1213927345375910'
token = ''

In [3]:
comments = []
pages = 0

url = 'https://graph.facebook.com/v2.11/{}/comments?pretty=0&limit={}&access_token={}'.format(
    article_id, 100, token
)

while True:
    pages += 1
    resp = requests.get(url)
    data = resp.json()
    comments += data['data']
    
    if 'next' not in data['paging']:
        print('EOF')
        break
    else:
        url = data['paging']['next']
        print('pages {}'.format(pages))
        
print('comment length = {}'.format(len(comments)))


pages 1
pages 2
pages 3
pages 4
EOF
comment length = 431

In [4]:
df = pd.DataFrame.from_records(comments)
df.head()


Out[4]:
created_time from id message
0 2018-01-09T11:02:42+0000 NaN 1213927345375910_1213982232037088 市長,謝謝您注意到這個議題。但是,不知道您是否同時有發現,比起醫療環境,更加威脅台灣幼兒的,...
1 2018-01-09T11:07:44+0000 NaN 1213927345375910_1213985318703446 我希望如果有天你有能力了,可以為被虐的兒童提出修法保護,更另闢一個無力撫養孩子的人一個出口,...
2 2018-01-09T11:21:33+0000 NaN 1213927345375910_1213993592035952 我也是重症兒童家屬\n感謝你的發言\n我第一次看到有政治人物願意大聲疾呼\n但不是說沒有其他...
3 2018-01-09T09:34:35+0000 NaN 1213927345375910_1213934828708495 每次看到你就覺得台灣還有希望\n不在乎選票在乎的是人
4 2018-01-09T11:28:25+0000 NaN 1213927345375910_1213997665368878 每當我覺得天下的烏鴉一般黑的時候 看到你的發文 又讓我覺得繼續奮鬥 台灣會被照亮的 柯文哲 ...

In [5]:
results = os.path.abspath('../results')
if not os.path.exists(results):
    os.makedirs(results)

filename = os.path.join(results, '{}.csv'.format(article_id))
df.to_csv(filename, index=False)
print('Save file - {}'.format(filename))


Save file - /home/dirl/github/Python-Crawling-Tutorial/results/1213927345375910.csv