喜歡看電影來哦!教你若是使用Python網絡爬蟲爬取豆瓣高分電影!

【1、項目背景】javascript

豆瓣電影提供最新的電影介紹及評論包括上映影片的影訊查詢及購票服務。能夠記錄想看、在看和看過的電影電視劇 、順便打分、寫影評。極大地方便了人們的生活。java

今天以電視劇(美劇)爲例,批量爬取對應的電影,寫入csv文檔 。用戶能夠經過評分,更好的選擇本身想要的電影。web

【2、項目目標】json

獲取對應的電影名稱,評分,詳情連接,下載 電影的圖片,保存文檔。服務器

【3、涉及的庫和網站】網絡

一、網址以下:app

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}

二、涉及的庫:requests****、fake_useragent、json****、csv函數

三、軟件:PyCharm優化

【4、項目分析】網站

一、如何多網頁請求?

點擊下一頁時,每增長一頁paged自增長20,用{}代替變換的變量,再用for循環遍歷這網址,實現多個網址請求。

二、如何獲取真正請求的地址?

請求數據時,發現頁面上並無對應數據。其實豆瓣網採用javascript動態加載內容,防止採集。

1)F12右鍵檢查,找到Network,左邊菜單Name , 找到第五個數據,點擊Preview。

2)點開subjects,能夠看到 title 就是對應電影名稱。rate就是對應評分。經過js解析subjects字典,找到須要的字段。

  1. 如何網頁訪問?
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0



https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=20



https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=40



https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=60

當點擊下一頁時,每增長一頁page自增長20,用{}代替變換的變量,再用for循環遍歷這網址,實現多個網址請求。

【5、項目實施】

一、咱們定義一個class類繼承object,而後定義init方法繼承self,再定義一個主函數main繼承self。導入須要的庫和請求網址。


二、隨機產生UserAgent,構造請求頭,防止反爬。


三、發送請求 ,獲取響應,頁面回調,方便下次請求。


四、json解析頁面數據,獲取對應的字典。


五、for遍歷,獲取對應的電影名、 評分、下詳情頁連接。


六、建立csv文件進行寫入,定義對應的標題頭內容,保存數據 。


七、圖片地址進行請求。定義圖片名稱,保存文檔。


八、調用方法,實現功能。


九、項目優化:

1)設置時間延時。


2)定義一個變量u, for遍歷,表示爬取的是第幾頁。(更清晰可觀)。


【6、效果展現】

一、點擊綠色小三角運行輸入起始頁,終止頁( 從0頁開始 )。

二、將下載成功信息顯示在控制檯。

三、保存csv文檔。

四、電影圖片展現。

【7、總結】

一、不建議抓取太多數據,容易對服務器形成負載,淺嘗輒止便可。

二、本文章就Python爬取豆瓣網,在應用中出現的難點和重點,以及如何防止反爬,作出了相對於的解決方案。

三、但願經過這個項目,可以幫助瞭解json解析頁面的基本流程,字符串是如何拼接,format函數如何運用。

四、本文基於Python網絡爬蟲,利用爬蟲庫,實現豆瓣電影及其圖片的獲取。實現的時候,總會有各類各樣的問題,切勿眼高手低,勤動手,才能夠理解的更加深入。

 

此文轉載文,著做權歸做者全部,若有侵權聯繫小編刪除!

原文地址:https://www.tuicool.com/articles/muiIZj2

 

須要源代碼或者想了解更多(點擊這裏查看)

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息