Python爬蟲運用正則表達式的方法和優(yōu)缺點
前言
我看到最近幾部電影很火,查了一下貓眼電影上的數(shù)據(jù),發(fā)現(xiàn)還有個榜單,里面有各種經(jīng)典和熱映電影的排行榜,然后我覺得電影封面圖還挺好看的,想著一張一張下載真是費時費力,于是突發(fā)奇想,好像可以用一下最近學的東西實現(xiàn)我的需求,學習了正則表達式之后,想著要感受一下它在爬蟲里面的效果和優(yōu)缺點。
目標:爬取Top100榜單上電影的封面圖
Top100榜單規(guī)則:將貓眼電影庫中的經(jīng)典影片,按照評分和評分人數(shù)從高到低綜合排序取前100名,每天上午10點更新。相關數(shù)據(jù)來源于“貓眼電影庫”。
下面是我做的步驟:
(1)查看頁面元素,找到包含圖片的路徑的代碼段落
(2)分析圖片在web上面的唯一屬性,便于之后獲取正確圖片位置信息
(3)因為需要翻頁,觀察多個頁面的URL變化
(4)綜合以上幾個點,編寫合適的正則表達式
1、python 標準庫中re模塊提供了正則表達式的全部功能,直接引入;requests模塊是http庫,爬蟲常用庫,而urllib.requests 則是最后用到寫入文件的函數(shù)
import re import requests import urllib.request
2、先接收URL地址的HTML頁面,然后轉(zhuǎn)化為str形式(正則表達式是匹配字符串),第一個pattern1縮小范圍,抓取目標部分,result1接收匹配的結(jié)果,這時候所有封面圖地址就在里面了
response = requests.get(url) response = str(response.content) patttern1 = '<dl class="board-wrapper">.+?<div class="pager-main">' result1 = re.compile(pat).findall(response)
3、第二個正則,匹配圖片的地址信息
pat2 = '<img data-src="https://(.+?\.jpg)' photos = re.compile(pat1).findall(re1[0])
這時候爬取到100張圖的信息,如下圖:
4、繼續(xù)下一步,把每張圖片命名好,需要正確的圖片地址,避免重復
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、最后一步了,因為需要翻頁爬取,所以加了一個循環(huán),10頁內(nèi)容爬取下來
for i in range(0, 100, 10): url = 'http://maoyan.com/board/4?offset='+str(i) get_one_page(url, i) #定義函數(shù),多次調(diào)用
相對來說,這是一個很簡單的應用,也是自己學習之后的實踐,在這個例子中,我是用到正則表達式來實現(xiàn)的,還有其他方法,而且可能簡單,比如BeautifulSoup,XPath等方法,用在更加復雜的爬蟲項目里面,需要的知識更多,方法更嚴謹,還需學習學習!
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。
相關文章
python utc datetime轉(zhuǎn)換為時間戳的方法
今天小編就為大家分享一篇python utc datetime轉(zhuǎn)換為時間戳的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01python Selenium等待元素出現(xiàn)的具體方法
在本篇文章里小編給大家分享的是一篇關于python Selenium等待元素出現(xiàn)的具體方法,以后需要的朋友們可以學習參考下。2021-08-08Flask框架運用Ajax實現(xiàn)數(shù)據(jù)交互的示例代碼
使用Ajax技術網(wǎng)頁應用能夠快速地將增量更新呈現(xiàn)在用戶界面上,而不需要重載刷新整個頁面,這使得程序能夠更快地回應用戶的操作,本文將簡單介紹使用AJAX如何實現(xiàn)前后端數(shù)據(jù)通信2022-11-11python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法
這篇文章主要介紹了python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法,需要的朋友可以參考下2014-04-04python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)
這篇文章主要為大家介紹了python光學仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10python?中的?BeautifulSoup?網(wǎng)頁使用方法解析
這篇文章主要介紹了python?中的?BeautifulSoup?網(wǎng)頁使用方法解析,文章基于python的相關資料展開詳細內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下2022-04-04Jupyter notebook在mac:linux上的配置和遠程訪問的方法
今天小編就為大家分享一篇關于Jupyter notebook在mac:linux上的配置和遠程訪問的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01python實現(xiàn)一行輸入多個整數(shù)并排序輸出
這篇文章主要介紹了python實現(xiàn)一行輸入多個整數(shù)并排序輸出方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python實現(xiàn)語音轉(zhuǎn)文本的兩種方法
這篇文章主要給大家介紹了關于Python實現(xiàn)語音轉(zhuǎn)文本的兩種方法,Python提供了許多工具和庫來進行這些任務,本文通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-06-06