在上篇文章爬取豆瓣電影top250後,想想既然爬了電影,乾脆就連影評也爬了,這樣可以看看人們評價的電影,再加上剛出不久的移動迷官3好像挺熱的,乾脆就爬他吧,爬完看看好不好看!
1.去找目標網頁並找到所要找的資料
一進去網頁就條件反射開啟開發者工具,很容易就看到了這個
滑鼠所點的就是我接下來要爬的網站,先看看他的response和請求頭之類的資訊,他的請求方式時get,response是一個網頁結構,這就好辦了,我們就可以用正則來匹配出所要的資料,正則還是個很好用的東西,請大家務必要學會啊。那接下來就動手敲程式碼咯!
2.用re+requests獲取資料
獲取資訊
先把資料寫入txt檔案中(開啟的檔案要指定編碼為utf-8,要不會出現編碼問題,因為window的預設編碼方式是gbk,而你的編碼為utf-8)
正規表示式和網址
一點選執行,只執行了兩頁,就出了問題,因為這個評論不止兩頁
除錯了下,在獲取完第二頁的時候他返回了個不存在的網頁,導致我的正規表示式捕捉不到資料,出現了個空的page,所以就只下載了兩頁,這應該是被反爬了,繼續回網頁看看需要加什麼請求頭,然而我把全部的請求頭的資訊都加了,還是沒用,這就觸及到我的盲區了(尷尬臉),但是我可以百度啊,百度一看,看見有人說模擬登陸就可以了,那好,我就來模擬登陸一波!!!
3.模擬登陸豆瓣
首先需要看看登陸需要什麼引數,這個引數是在豆瓣的登陸網址,先開啟登陸,開啟開發者工具(要不會看不到後面這個所需要的網頁),填好資訊點選登陸,然後點選這個login網頁,往下拉就會看到From Data 這個框,這個就是登陸所要的引數
直接把他們複製過來即可
然後就用post把資訊發到伺服器完成登陸,但是這有個問題,怎麼儲存登陸資訊呢?這就需要用到Session()來保留了,但是注意,只需要建立一個會話資訊就可以了,不是每個都用這個方法,我初學時就是犯這個錯誤以至於我搞了很久還沒有登陸成功。程式碼如下
然後用這個post上去,注意!注意!注意!post的網址是登陸網址,不是你要爬的網址,我剛學時也是被這個坑了很久(怎麼感覺我很多問題),還有其他用requests的都需要替換成self.ssession()
最後這樣
大功告成,由於只能獲取500條這是因為豆瓣只開放了500條評論資訊,多一條都不肯給
4.登陸多了需要填驗證碼
由於我多次登陸登出,然後我就需要填驗證碼了,然而這還是難不到我,還是分析網頁找出驗證碼圖片然後下載下來自己填寫,還沒有那些大佬那麼厲害可以用人工智慧來填寫,程式碼如下
還有將資料保留到資料庫,我就不貼了,程式碼和上篇文章的差不多
通過這個我學會了使用session來儲存會話資訊來登陸簡單網頁,還可以填寫驗證碼,自己還是覺得有點高大上的,嘻嘻。由於本人還沒學資料分析,就只能到這裡,而生成詞雲也有點不會,直接複製貼上來無趣,所以就先不寫了,等大神你來寫吧!
最後非常感謝你看完了我的文章,如果覺得有用可以點贊,轉發哈!若需要完整程式碼在微信公眾號日常學python後臺回覆影評即可,若需要python相關的電子書也可以回覆pdf獲得,日後還會有更多福利發給你
上一篇文章:python使用requests+re簡單入門爬蟲
日常學python
一個專注於python的公眾號