資料解析之正則

2022-09-18 12:54:08 字數 1852 閱讀 4648

聚焦爬蟲的編碼流程:

指定url - 發起請求 - 獲取響應資料 - 資料解析 - 持久化儲存

原理概述:

因為解析的區域性資料都在標籤之間或者是標籤對應的屬性中進行儲存,所以首先要進行指定標籤的定位,然後對標籤或者標籤對應的屬性中儲存的資料進行提取(解析)。

假設有一張,其位址寫在下面的div標籤中,需求是將該位址提取出來,只獲取其中的路徑:ex = .*?

此時,該正則表示的就是

<

div

class

="context"

>

<

a href

="/article/121721100"

target

="_blank"

>

<

img

src=""

alt="指引我有前進的方向"

>

a>

div>

因此,採用正則匹配篩選出該頁面所有的位址,然後通過finall()返回乙個存放位址的列表,然後請求的二進位制資料,進行持久化儲存:    

# 建立資料夾用於儲存所有

# 如果qiutulibs資料夾不存在,那麼通過mkdir()建立

if not os.path.exists('./baoxiao'):

os.mkdir('./baoxiao')

...

#採用正則匹配篩選出該頁面所有的位址

ex = '

.*?#將該表示式作用於page_text,param1表示正規表示式,param2表示作用於哪個物件,param3表示單行匹配,最後findall返回的是列表

img_src_list =re.findall(ex,page_text,re.s)

for src in

img_src_list:

#拼接為乙個完整的url

src = url +src

#請求到的二進位制資料

img_data = requests.get(url=src,headers=headers).content

#持久化儲存,需要乙個固定的資料夾(通過os建立資料夾),並且每張需要命名

#命名的話,根據位址最後的組成部分命名,比如中把最後部分切分split()出來,根據'/'切分,然後取最後一部分'-1'

img_name = src.split('

/')[-1]

#指定儲存路徑

imgpath = '

./baoxiao/

' + img_name

最後成功實現:

如果在此基礎上增加實現分頁爬取功能的話,那麼在設定url時,應寫為如下內容:

url = '

'for pagenum in range(1,3):

#format()把%d後面的內容替換為字串形式進行格式化輸出

new_url = format(url%pagenum)

#先用通用爬蟲提取整張頁面資料

page_text = requests.get(url=new_url,headers=headers).text

【補充一部分正則內容】

解析資料 正則,xpath

正規表示式拆分 importre 1.拆分字串 one asdsfsgsh 標準 是 s 為拆分 pattern re.compile s result pattern.split one print result 2.匹配中文 two 網頁是最新版本的,適配移動端 python中 匹配中問 a z...

05資料解析 正則

1 爬蟲 2 爬蟲的分類 3 反爬機制 反反爬策略 4 robots,ua監測 ua偽裝 5 http和https概念 伺服器和客戶端進行資料互動的某種形式。6 常用的頭資訊 7 https的加密方式 證書秘鑰加密 8 request get post 9 什麼是動態載入的資料 由另乙個額外的請求請...

網路爬蟲之網頁資料解析(正則re)

正規表示式測試 title u 你好,hello,世界,天安門,願望 pattern re.compile u u4e00 u9fa5 result pattern.findall title print result 貪婪模式與非貪婪模式import re str aatest1 bbtest2 ...