前言
我看到最近幾部電影很火,查了一下貓眼電影上的數據,發現還有個榜單,里面有各種經典和熱映電影的排行榜,然后我覺得電影封面圖還挺好看的,想著一張一張下載真是費時費力,于是突發奇想,好像可以用一下最近學的東西實現我的需求,學習了正則表達式之后,想著要感受一下它在爬蟲里面的效果和優缺點。
目標:爬取Top100榜單上電影的封面圖
Top100榜單規則:將貓眼電影庫中的經典影片,按照評分和評分人數從高到低綜合排序取前100名,每天上午10點更新。相關數據來源于“貓眼電影庫”。
下面是我做的步驟:
(1)查看頁面元素,找到包含圖片的路徑的代碼段落
(2)分析圖片在web上面的唯一屬性,便于之后獲取正確圖片位置信息
(3)因為需要翻頁,觀察多個頁面的URL變化
(4)綜合以上幾個點,編寫合適的正則表達式
?1、python 標準庫中re模塊提供了正則表達式的全部功能,直接引入;requests模塊是http庫,爬蟲常用庫,而urllib.requests 則是最后用到寫入文件的函數
import re import requests import urllib.request
2、先接收URL地址的HTML頁面,然后轉化為str形式(正則表達式是匹配字符串),第一個pattern1縮小范圍,抓取目標部分,result1接收匹配的結果,這時候所有封面圖地址就在里面了
response = requests.get(url) response = str(response.content) patttern1 = '
-
.+?
3、第二個正則,匹配圖片的地址信息
pat2 = '![]()
![]()
?4、繼續下一步,把每張圖片命名好,需要正確的圖片地址,避免重復?
x = 1 for imgurl in name: imgname = 'D:/Top 100/'+str(i/10)+str(x)+'.jpg' imgurl = 'https://'+imgurl urllib.request.urlretrieve(imgurl,filename=imgname) x += 1?5、最后一步了,因為需要翻頁爬取,所以加了一個循環,10頁內容爬取下來
for i in range(0, 100, 10): url = 'http://maoyan.com/board/4?offset='+str(i) get_one_page(url, i) #定義函數,多次調用相對來說,這是一個很簡單的應用,也是自己學習之后的實踐,在這個例子中,我是用到正則表達式來實現的,還有其他方法,而且可能簡單,比如BeautifulSoup,XPath等方法,用在更加復雜的爬蟲項目里面,需要的知識更多,方法更嚴謹,還需學習學習!
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
