先前發文
DAY 01 : 參賽目的與規劃
DAY 02 : python3 virtualenv 建置
DAY 03 : python3 request
DAY 04 : 使用beautifulsoup4 和lxml
DAY 05 : select 和find 抓取tag
DAY 06 : soup解析後 list取值
DAY 07 : request_header_cookie 通過網頁18限制
DAY 08 : ppt內文爬取
DAY 09 : 資料處理 split replace strip
DAY 10 : python csv 寫入 和dict 合併
DAY 11 : python class function
DAY 12 : crawl 框架 scrapy 使用
DAY 13 : scrapy 架構
DAY 14 : scrapy pipeline data insert mongodb
DAY 15 : scrapy middleware proxy
DAY 16 : scrapy selenium
DAY 17 : scrapy 爬取js畫面資料(二)
DAY 18 : scrapy splash 爬取js畫面資料(三)
DAY 19 : python .env 使用
DAY 20 : python chartify 資料視覺化套件
DAY 21 : python3 pandas 資料處理
DAY 22 : scrapy 資料應用apriori
DAY 23 : Datamining twitch data
DAY 24 : scrapy facebook crawl (一)
今天來爬facebook
首先我們先用手機使用瀏覽器開啟facebook
你會發現網頁url上 和一般的https://www.facebook.com/ , www變成了"m"
在我們的網頁上你可以嘗試更改你的網址並觀察 原本關閉js的facebook和mbasic關閉後的網頁是否相同
一般的網頁(www.facebook.com)關閉js後頁面就會被置換
那mbasic的網頁關閉js後保留了更多資料
那我們一開始先預設我們需要的資料欄位
並且設定爬取文章的年份
記得要把自己facebook的語系設成it(義大利) , 只有義大利語系可以讓我們爬取(2018的時候
是這樣沒錯) , 但是剛剛重新跑了一下code 並沒有這個限制
class FacebookSpider(scrapy.Spider):
"""
Parse FB pages (needs credentials)
"""
name = "fb"
#name
custom_settings = {
'FEED_EXPORT_FIELDS': ['source','shared_from','date','text', \
'reactions','likes','ahah','love','wow', \
'sigh','grrr','comments','url']
}
#輸出csv 欄位順序
k = 2019
count = 0
#先寫入第幾行
lang = 'it'
start_urls = ['https://mbasic.facebook.com']
#預設網址之後會+上/@#$%^&*
def parse(self, response):
'''
Handle login with provided credentials
'''
email = os.getenv("EMAIL")
password = os.getenv("PASSWORD")
return FormRequest.from_response(
response,
formxpath='//form[contains(@action, "login")]',
formdata={'email': email,'pass': password},
callback=self.parse_home
)
#給formdata後給parse_home進行登入
明天來爬取頁面吧!