日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python安全攻防---爬虫基础--re解析数据

發布時間:2023/12/1 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python安全攻防---爬虫基础--re解析数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0x01 re基礎

使用re模塊,必須先導入re模塊

import re
  • findall():匹配所有符合正則的內容,返回的是一個列表
import restr = "我的電話:10086,女朋友電話:11011" list = re.findall('\d+',str) print(list)

  • finditer():匹配所有符合的內容,返回的是迭代器,使用group可取到內容
import restr = "我的電話:10086,女朋友電話:11011" ite = re.finditer('\d+',str) for i in ite:print(i.group())

  • search():只匹配一個,返回的是match對象,獲得匹配數據要使用group()
import restr = "我的電話:10086,女朋友電話:11011" ite = re.search('\d+',str) print(ite.group())

  • match():只在開頭匹配
import restr = "我的電話:10086,女朋友電話:11011" ite = re.match('\d+',str) print(ite.group())


將10086放在字符串最前面就可以匹配了

  • compile():預加載正則表達式
import restr = "我的電話:10086,女朋友電話:11011"com = re.compile('\d+') lst = com.findall(str) print(lst)

0x02 案例

案例1

獲取下面字符串里面的名字和ID:

''' <div class='jcw'><span id='1'>金城武</span></div> <div class='hg'><span id='2'>胡歌</span></div> <div class='pyy'><span id='3'>彭于晏</span></div> <div class='az'><span id='4'>阿祖</span></div> '''

程序:

import restr = ''' <div class='jcw'><span id='1'>金城武</span></div> <div class='hg'><span id='2'>胡歌</span></div> <div class='pyy'><span id='3'>彭于晏</span></div> <div class='az'><span id='4'>阿祖</span></div> '''com = re.compile("<div class='.*?'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>") result = com.finditer(str) for i in result:print(i.group('id'),i.group('name'))

在預編譯中有(?P\d+),(?P)是告訴處理器,括號里面的內容需要注意,我需要單獨拿出來,<>里面是告訴處理器,這里拿出來的內容叫什么名字,后面可以根據這個名字對(?P)匹配的內容單獨處理,比如后面group('id')直接根據名字取出數據

案例2

爬取豆瓣電影top250的電影名、導演、時間
程序:

import re import requestsurl = 'https://movie.douban.com/top250'headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362'} response = requests.get(url=url,headers=headers) content = response.textobj = re.compile('<li>.*?<div class="item">.*?<div class="info">''.*?<span class="title">(?P<name>.*?)</span>.*?''<p class="">(?P<name2>.*?)&nbsp;&nbsp;&nbsp;.*?<br>(?P<age>.*?)&nbsp;',re.S)result = obj.finditer(content) for it in result:print(it.group("name"))print(it.group('name2').strip())print(it.group('age').strip())

結果:

compile中的re.S是讓.匹配任何字符,換行符也匹配

總結

以上是生活随笔為你收集整理的python安全攻防---爬虫基础--re解析数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。