tlyu0419 / TLYu0419.github.io

Big data , Mechine learning
4 stars 3 forks source link

Facebook粉絲專頁爬蟲心得 | 旅程 #15

Open tlyu0419 opened 4 years ago

tlyu0419 commented 4 years ago

https://tlyu0419.github.io/2020/03/17/Crawl-Facebook-Pages/#more

先前曾發表過 網路爬蟲_Facebook粉絲團貼文與留言 的文章,可以透過 Selenium 來抓取 Facebook 粉絲專頁的貼文與留言,但由於 Selenium 的效率實在太慢了,因此這篇文章是記錄我嘗試用 request 抓取資料的心得,並且於文末附上台灣的2020總統大選三位候選人從 2019年 1 月至 2020 年 2 月間的貼文與留言資料~

efb258dd commented 4 years ago

我想請問一下! 您是如何點開貼文的留言,一樣是使用seleinum重複點開嗎? 還是說使用requests也可以做到跟seleinum一樣的效果?

tlyu0419 commented 4 years ago

@efb258dd 我想請問一下! 您是如何點開貼文的留言,一樣是使用seleinum重複點開嗎? 還是說使用requests也可以做到跟seleinum一樣的效果?

Hi Efb

這邊沒有透過 Selenium ,是直接送 request 過去。 原理的話可以參考文章的內容,用 F12 的檢查功能觀察網頁的互動過程確認送了哪些參數以及參數的位置~

efb258dd commented 4 years ago

哥不好意思想再請問一下幾個問題

  1. 要進post裡的url是否是 "https://www.facebook.com/api/graphql/"
  2. 因為是查詢graphql 所以要增加graphql的語法是嗎?
  3. FB要查詢graphql是否都要有Access Token? 問題有點多不好意思了!
ansn1274 commented 4 years ago

請問一下timeline_cursor如何取得? 我從前一個requests中的respond找不到能當下一次requests的timeline_cursor 那要如何進行下一次requests? 另外我發現facebook的timeline cursor和post無關 而是代表這個專業的"第幾篇"貼文,且不同粉專的timeline_cursor共用,但我仍不知道如何獲得timeline_cursor 希望能得到回覆 萬分感謝!

tlyu0419 commented 4 years ago

@ansn1274 請問一下timeline_cursor如何取得? 我從前一個requests中的respond找不到能當下一次requests的timeline_cursor 那要如何進行下一次requests? 另外我發現facebook的timeline cursor和post無關 而是代表這個專業的"第幾篇"貼文,且不同粉專的timeline_cursor共用,但我仍不知道如何獲得timeline_cursor 希望能得到回覆 萬分感謝!

你找一下respond裡面有沒有endcursor的參數,找到後把他送進去就可以了

tlyu0419 commented 4 years ago

@efb258dd 哥不好意思想再請問一下幾個問題

  1. 要進post裡的url是否是 "https://www.facebook.com/api/graphql/"
  2. 因為是查詢graphql 所以要增加graphql的語法是嗎?
  3. FB要查詢graphql是否都要有Access Token? 問題有點多不好意思了!
  1. 把上面圖片中的參數用post的方式送進去
  2. 不用token
ansn1274 commented 4 years ago

@TLYu0419

@ansn1274 請問一下timeline_cursor如何取得? 我從前一個requests中的respond找不到能當下一次requests的timeline_cursor 那要如何進行下一次requests? 另外我發現facebook的timeline cursor和post無關 而是代表這個專業的"第幾篇"貼文,且不同粉專的timeline_cursor共用,但我仍不知道如何獲得timeline_cursor 希望能得到回覆 萬分感謝!

你找一下respond裡面有沒有endcursor的參數,找到後把他送進去就可以了

謝謝你,我成功了,但確實不是在貼文內,endcursor也會失敗,後來是用貼文下方載入更多貼文button裡的timeline_cursor就成功了。 timeline_cursor指的是該專頁最新的第幾篇貼文,而不是指特定的post,幫您更正!所以我之前拿別的粉磚的cursor來另一個粉專用也能成功。 只有在這裡看到直接用requests的,用瀏覽器跑爬蟲爬到後面根本跑不動orz,幫了大忙感謝版主!

tlyu0419 commented 4 years ago

@ansn1274

@TLYu0419

@ansn1274 請問一下timeline_cursor如何取得? 我從前一個requests中的respond找不到能當下一次requests的timeline_cursor 那要如何進行下一次requests? 另外我發現facebook的timeline cursor和post無關 而是代表這個專業的"第幾篇"貼文,且不同粉專的timeline_cursor共用,但我仍不知道如何獲得timeline_cursor 希望能得到回覆 萬分感謝!

你找一下respond裡面有沒有endcursor的參數,找到後把他送進去就可以了

謝謝你,我成功了,但確實不是在貼文內,endcursor也會失敗,後來是用貼文下方載入更多貼文button裡的timeline_cursor就成功了。 timeline_cursor指的是該專頁最新的第幾篇貼文,而不是指特定的post,幫您更正!所以我之前拿別的粉磚的cursor來另一個粉專用也能成功。 只有在這裡看到直接用requests的,用瀏覽器跑爬蟲爬到後面根本跑不動orz,幫了大忙感謝版主!

感謝修正^^

maomao976431 commented 4 years ago

您好,請問透過JavaScript來獲取Facebook某個粉絲專頁的最新貼文是可行的嗎?只需要最新的貼文就行

Ting0887 commented 3 years ago

fb graph api好像不能用

jacky917 commented 3 years ago

請問留言資料跟貼文內容怎麼對應起來...好像沒有看到共同的ID...望解惑感謝

maybeimcat86211 commented 3 years ago

@Ting0887 fb graph api好像不能用 我也是不能使用~ image 會出現這樣的錯誤

Ting0887 commented 3 years ago

@maybeimcat86211

@Ting0887 fb graph api好像不能用 我也是不能使用~ image 會出現這樣的錯誤

@maybeimcat86211

@Ting0887 fb graph api好像不能用 我也是不能使用~ image 會出現這樣的錯誤

你的錯誤訊息應該是requests次數已經超過上限,我今天試了一下, 的確是可以用graph api抓資料~~~但可能還是無法大量爬

Ting0887 commented 3 years ago

@efb258dd 哥不好意思想再請問一下幾個問題

  1. 要進post裡的url是否是 "https://www.facebook.com/api/graphql/"
  2. 因為是查詢graphql 所以要增加graphql的語法是嗎?
  3. FB要查詢graphql是否都要有Access Token? 問題有點多不好意思了!

不需要吧,因為是用post請求,所以該有的參數帶入就可以抓到資料

tlyu0419 commented 3 years ago

Hi All 我把程式碼打包成套件了,需要的話可以直接 pip 安裝使用~ https://pypi.org/project/facebook-crawler/