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.mzph.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…