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是讓.匹配任何字符,換行符也匹配

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379854.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379854.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379854.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BSP for good 3d engine

1.open sourcehttp://irrlicht.sourceforge.net/downloads/ 2.不錯的小材質http://www.permadi.com/tutorial/webgraph/index.html 3.java bsp display(demo):http://www.symbolcraft.com/graphics/bsp/index.php http://www.faqs.org/faqs/graphics/bsptree-faq/ 4.a bps ill…

Java InputStreamReader getEncoding()方法及示例

InputStreamReader類的getEncoding()方法 (InputStreamReader Class getEncoding() method) getEncoding() method is available in java.io package. getEncoding()方法在java.io包中可用。 getEncoding() method is used to get the encoding name avail for this InputStrea…

python安全攻防---爬蟲基礎---BeautifulSoup解析

0x01 基礎 使用bs4首先要安裝&#xff0c;安裝后導入 import bs4bs對象有兩個方法&#xff0c;一個是find&#xff0c;另一個是find_all find&#xff08;標簽名&#xff0c;屬性值&#xff09;&#xff1a;只返回一個&#xff0c;返回也是bs對象&#xff0c;可以繼續用find…

DataRabbit 3.1發布,完全支持SqlServer2005/2008

增加了對SqlServer2005/2008的新的數據類型的支持&#xff0c;如uniqueidentifier、time、sql_variant等。另外&#xff0c;EntityCreator也一起更新--不再強迫為Entity生成ToString&#xff08;&#xff09;方法&#xff0c;使用者可以主動選擇是否要生成。 DataRabbit 3.1 下…

Java——Socket通信原理

* Socket通信原理圖解* A:Socket(中文翻譯為&#xff1a;電源插座)套接字概述* 網絡上具有唯一標識的IP地址和端口號組合在一起才能構成唯一能識別的標識套接字* 通信的兩端都有Socket(兩端都是電源插座&#xff0c;中間是啥&#xff1f;不就是電線啦&#xff0c;電…

asp.net鏈接mysql數據庫------------【個人收集】

在web.config文件中添加如下樣式的數據庫鏈接字符串&#xff1a; <add name"dbconnection" connectionString"DataBasedatabasename;Server127.0.0.1;Uid用戶名;Pwd密碼;character setgbk;" providerName"MySql.Data.MySqlClient"/></c…

sql2005 遠程連接

SQL Server 2005 不允許遠程連接解決方法轉載于:https://www.cnblogs.com/lcq135/archive/2008/11/06/1328380.html

Java GregorianCalendar computeTime()方法與示例

GregorianCalendar類computeTime()方法 (GregorianCalendar Class computeTime() method) computeTime() method is available in java.util package. java.util包中提供了computeTime()方法 。 computeTime() method is used to compute the calendar fields to the calendar …

python安全攻防---scapy基礎---計算機網絡各層協議

網絡層次劃分 比較常用的是TCP/IP五層協議。 0x01應用層 應用層是網絡應用程序以及它們的應用層協議存留的地方。應用層協議和應用程序直接掛鉤 DHCP(Dynamic Host Configuration Protocol)動態主機分配協議&#xff0c;使用 UDP 協議工作&#xff0c;主要有兩個用途&#xf…

一點心得(0)

1, 在C中&#xff0c;如果棧里的空間不足的話&#xff0c;要考慮用new命令在堆上動態生成數據&#xff0c;比如說保存所有無符號整數型的bitset&#xff0c;得用bitset<UINT_MAX1>* bs new bitset<UINT_MAX1>;來聲明定義&#xff0c;最后別忘了delete掉。 2, make…

Java——UPD輸出及優化再優化

* UPD傳輸不區分客戶端跟服務端&#xff0c;* 這里用Send和Receive這兩個方法決定誰發誰收 * 1.發送Send * 創建DatagramSocket,隨機端口號* 創建DatagramPacket,指定數據、長度、地址、端口* 創建DatagramSocket發送DatagramPacket* 關閉DatagramSocket 代碼如下&…

FLEX:圖形制作皮膚vs編程制作皮膚

Styles&#xff08;樣式&#xff09;提供了一個可以自定義flex外觀的層.可以圖形制作皮膚&#xff0c;也可以編程實現. &#xff08;小小菜鳥翻譯&#xff09; 圖形制作皮膚的 優點是 很容易實現&#xff0c;通過位圖&#xff0c;矢量圖&#xff0c;swf。 缺點是功能有限。…

Java文件類boolean canExecute()方法(帶示例)

文件類boolean canExecute() (File Class boolean canExecute()) This method is available in package java.io.File.canExecute(). 軟件包java.io.File.canExecute()中提供了此方法。 This method is used to execute the file and the file is represented by the abstract …

python安全攻防---scapy使用

導入scapy包 from scapy.all import *構造包 a Ether()/IP(dst114.114.114.114)/TCP(dport80)/應用層數據我們如果記不得每個包的選項使&#xff0c;可以使用show()來查看 print(a.show())發送包 sr(IP(dst‘192.168.1.0/24’)/TCP(dport(1,65535)), timeout2) &#xff1…

唉!

學習到后面時&#xff0c;再返回看了一下前面學過的&#xff0c;發現以前學過&#xff0c;看不懂的東西現在能看懂了…… &#xff01;不過 為什么在剛學時就是不懂&#xff0c;這樣 不就老是慢一拍嗎&#xff1f;唉&#xff01;&#xff01;轉載于:https://www.cnblogs.com/ni…

Java—— TCP協議(相關代碼實現以及相關優化)

代碼運行的時候先運行服務端&#xff0c;然后在運行客戶端 * TCP協議&#xff1a;* 1&#xff0c;客戶端* 創建Socket連接服務器(指定IP地址&#xff0c;端口號)通過IP地址找到對應的服務器* 調用Socket的getInputStream()和getOutputStream()方法獲取和服務器端相連…

什么是adsense 想通過廣告掙錢的看過來

Adsense的含義Google AdSense是由Google公司推出的針對網站主&#xff08;簡稱發布商&#xff09;的一個互聯網廣告服務。AdSense是個合成詞。其中ad是“廣告”之意&#xff0c;sense是“感知”之意&#xff0c;綜合起來的意思就是相關廣告。Google通過程序來分析網站的內容&am…

Java GregorianCalendar getTimeZone()方法與示例

GregorianCalendar類的getTimeZone()方法 (GregorianCalendar Class getTimeZone() method) getTimeZone() method is available in java.util package. getTimeZone()方法在java.util包中可用。 getTimeZone() method is used to return the time zone for this GregorianCale…

python安全攻防---信息收集---ICMP主機探測 以及optionparser的使用

0x01 基礎概念 ICMP&#xff08;Internet control Message Protocal&#xff09;Internet報文協議&#xff0c;是TCP/IP的一種子協議&#xff0c;屬于網絡層協議&#xff0c;其目的是用于在IP主機、路由器之間傳遞控制信息 0x02 程序 程序 # -*- coding:utf-8 -*- from sca…

PHP文件系統-文件下載

一、網頁請求和響應的過程 請求&#xff1a; 1. HTTP 1.1 協議 版本 2. 頭信息&#xff0c;請求的ip&#xff0c;其他 3. 你請求的表單信息, 你提交給服務器的信息 http://localhost/one.php?aabbb&cccdd 響應&#xff1a; 1. 狀態 200 ok 404 頁面沒找到 2. 響應頭信息&a…