1. 程式人生 > 實用技巧 >正則表示式-爬蟲獲取豆瓣電影超連結

正則表示式-爬蟲獲取豆瓣電影超連結

視訊學習資料:

https://www.bilibili.com/video/BV12E411A7ZQ?p=22

常用正則表示式知識總結與應用:

原文地址:https://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html

一、正則表示式簡單解析

正則表示式:(判斷字串是否符合一定的標準)

二、Re庫主要功能函式

新增的模式限定:

注意*:建議在正則表示式中,被比較的字串前面加上人,不用擔心轉義字元的問題

三、原始碼案例

import urllib.request,urllib.error  #指定URL獲取網頁資料
import bs4  #網頁解析資料獲取
import re #正則表示式,進行文字匹配的 import xlwt #進行excel操作 import sqlite3 #進行SQLite資料庫操作 from bs4 import BeautifulSoup #主函式 def main(): baseurl="https://movie.douban.com/top250?start=" #1.爬取網頁 #2.逐一解析資料 dataList=getDate(baseurl) #3.儲存資料 #savepath="" #saveData(savepath) #askURL("https://movie.douban.com/top250?start=")
#影片詳情連結的規則 findLink=re.compile(r'<a href="(.*?)">') #生成正則表示式物件,表示規則(字串的模式) #-------------------------相關函式----------------------------- #1.爬取網頁 def getDate(baseurl): dataList=[] for i in range(0,1): #迴圈爬取頁面,呼叫活頁頁面資訊的函式10次 url=baseurl+str(i*25) html= askURL(url) #儲存獲取到的網頁原始碼
#2.逐一解析資料 soup=BeautifulSoup(html,"html.parser") for item in soup.find_all('div',class_="item"): #查詢符合要求的字串 #print(item) #測試:檢視電影item全部資訊 data=[] #儲存一部電影的所有資訊 item=str(item) #獲取影片詳情連結 link=re.findall(findLink,item)[0] #re庫用來通過正則表示式查詢指定的字串 print(link) return dataList #得到指定一個URL的網頁內容 def askURL(url): head={ #模擬瀏覽器頭部訊息,向豆瓣伺服器傳送訊息 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } #使用者代理表示告訴豆瓣伺服器,我們是什麼型別的機器,瀏覽器(本質上是告訴瀏覽器,我們可以接收什麼水平的檔案內容) request=urllib.request.Request(url,headers=head) html="" try: response=urllib.request.urlopen(request) html=response.read().decode("utf-8") #print(html) except urllib.error.URLError as e: if hasattr(e,"code"): print(e.code) if hasattr(e,"reason"): print(e.reason) return html #3.儲存資料 def saveData(savepath): print("print...") if __name__=="__main__": #當程式執行時,更容易管理程式碼主流程(程式入口) #呼叫函式 main();
View Code

四、執行截圖