如何抓取貓眼電影Top100的影片信息?
對於喜好電影的同學來說,貓眼電影和豆瓣電影應該是比較熟悉的電影評分的平台。但是,如何通過Python抓取貓眼電影評分前100的信息呢?
URL獲取
我們還是先分析URL。打開貓眼電影TOP100榜,可以看到如下頁面:
URL為:http://maoyan.com/board/4。但是,這一頁只有排名前10的電影,如何獲取下頁的URL呢?
點擊下方的下一頁,可以跳轉到第二頁:
URL為:http://maoyan.com/board/4?offset=10。由此,可以猜測offset的取值範圍為0,10,20,...,90。由此,我們可以構造出10個頁面的URL:
獲取到頁面後,下一步就是對頁面進行解析了。
頁面解析
下面看一下具體的頁面,在查看網頁源碼可以看到具體的內容。以排名第一的霸王別姬為例,HTML碼如下:
本文是通過正則表達式來獲取影片的信息,所以先要生成正則表達式的Pattern。我們想要提前的信息有:排名,影片名稱,演員,上映時間,評分。
匹配的表達式的寫法很簡單,需要找到一些關鍵的標籤,然後在需要的信息處加入(.*?),若匹配到表達式,就會返回相應的項。
另外,還需要對響應的欄位進行截取,獲取真正需要的信息。具體代碼如下:
數據存儲與保存
接下來需要將抓取的數據進行保存了,可以保存到CSV文件,文本文件,關係型資料庫MySQL或者是非關係型資料庫MongoDB。這裡以存儲文本文件為例,打開文件的方式為a即追加寫文件。
這裡要注意的是,因為寫入的內容包括漢字,所以需要設置系統編碼,設置為UTF-8,如下代碼前三行所示:
偽裝成瀏覽器
對於貓眼電影,有反爬蟲策略,如果不設置header,將無法獲取到HTML頁面,所以,在進行抓取頁面的時候,需要設置header:
文件數據
抓取好的文件的數據如下:
完整代碼
參考:
看完本文有收穫?請轉發分享給更多人
關注「Python那些事」,做全棧開發工程師


TAG:Python那些事 |