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解析数据相关推荐

  1. python安全攻防---爬虫基础---BeautifulSoup解析

    0x01 基础 使用bs4首先要安装,安装后导入 import bs4 bs对象有两个方法,一个是find,另一个是find_all find(标签名,属性值):只返回一个,返回也是bs对象,可以继续 ...

  2. python安全攻防---爬虫基础---get和post提交数据

    get提交数据1 get提交的数据就附在提交给服务器的url之后,以?开头参数之间以&隔开,例如/admin/user/123456.aspx?name=123&id=123 案例:写 ...

  3. 菜鸟Python实战-03爬虫之爬取数据

    最近想学习一下爬虫 所以参考了一下网上的代码,并加以理解和整理,好记性不如烂笔头吧. 以下代码的目标网站是豆瓣电影:https://movie.douban.com/top250?start=%22( ...

  4. scrapy爬虫储存到mysql_详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    获取要爬取的URL 爬虫前期工作 用Pycharm打开项目开始写爬虫文件 字段文件items # Define here the models for your scraped items # # S ...

  5. python 3.x 爬虫基础---http headers详解

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  6. Python学习笔记_1_基础_2:数据运算、bytes数据类型、.pyc文件(什么鬼)

    Python学习笔记_1_基础_2:数据运算.bytes数据类型..pyc文件(什么鬼) 一.数据运算 Python数据运算感觉和C++,Java没有太大的差异,百度一大堆,这里就不想写了.比较有意思 ...

  7. Python 爬虫基础: 如何将数据存入Mysql数据库

    使用爬虫爬数据,总要涉及到数据持久化,也就是数据存储的问题. 我们可以根据具体情况把数据保存在本地 txt 文件里,excel 里,csv 里等等,当然也可以存储在数据库里. 本篇博客主要记录如何通过 ...

  8. Python应用实战- 爬虫基础入门知识必会

    0.爬虫基础流程 把爬虫的过程模块化,基本上可以归纳为以下几个步骤: [√] 分析网页URL:打开你想要爬取数据的网站,然后寻找真实的页面数据URL地址: [√] 请求网页数据:模拟请求网页数据,这里 ...

  9. Python进阶--网络爬虫基础

    Python网络爬虫基础 一.网络请求 ProxyHandler处理器(代理): request库 发送get请求: 发送post请求: 使用代理 requests 处理cookie 信息.处理不信任 ...

最新文章

  1. 结构损伤检测与智能诊断 陈长征_阜康危房检测价格
  2. OpenCV加载Caffe框架模型
  3. php swoole环境搭建,windows系统php环境安装swoole具体步骤
  4. java bean 工厂模式_深入理解Java的三种工厂模式
  5. 前端学习(1857)vue之电商管理系统电商系统之配置api接口服务器并用postman调试接口
  6. 了解 SharePoint 2010 开发中的关键点
  7. 非x面容解锁插件ios13_iOS13.5 Beta3 推送,戴口罩解锁更加方便
  8. Linux物理CPU及逻辑CPU查看
  9. c++ primer note
  10. 【Python笔记】pygame 游戏框架
  11. 1016 部分A+B (15 分)—PAT (Basic Level) Practice (中文)
  12. win8系统服务器地址怎么查,win8查询服务器地址
  13. thinkphp 后台管理框架swiftadmin的使用
  14. ESP8266连接网络,获取网络天气api
  15. 华为MatePad Pro和华为MatePad区别
  16. zdm各命令的功能和作用_ZDM命令 注释
  17. 基于JAVA二次元文化网站计算机毕业设计源码+系统+lw文档+部署
  18. iis7 php 403,详解Nginx 出现 403 Forbidden 的解决办法
  19. HTML复选框,点击文字,对应的复选框选中
  20. CISSP考试的难点到底在哪里

热门文章

  1. JS_理解函数参数按值传递
  2. 小程序在父组件执行子组件方法,可适用于下拉刷新上拉加载之后执行子组件方法
  3. JS对全角与半角的验证,相互转化以及介绍
  4. CSS Hack 汇总速查一览
  5. CSS3 Transform、Transition和Animation属性总结
  6. 创建vue项目(一)搭建vue-cli、项目文件介绍、简单配置
  7. CentOS6.5安装MySQL5.7详细教程
  8. hdu1247(Hat’s Words)
  9. LPWSTR 类型的实参与const.char *类型形参不兼容
  10. SharePoint2013安装组件时AppFabric时出现1603错误,解决方法: