python基于正则爬虫-小笔记
一、re.match(),从字符串的起始位置开始匹配,比如hello,匹配模式第一个字符必须为 h
1、re.match(),模式'^hello.*Demo$',匹配字符串符合正则的所有内容
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.match('^hello.*Demo$',content)
print(result.group())
2、()、group(1),匹配字符串中的某个字符串,匹配数字 (\d+)
group()匹配全部,group(1)匹配第一个()
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.match('^hello\s(\d+)\s(\d+)\sWorld.*Demo$',content)
print(result.group(2))
3、\s只能匹配一个空格,若有多个空格呢,hello 123,用 \s+ 即可
4、匹配空格、或任意字符串,.*,为贪婪模式,会影响后面的匹配,比如 .*(\d+),因此用 .*? 代替\s+
4.1 贪婪模式
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.match('^hello.*(\d+)\s(\d+)\sWorld.*Demo$',content)
print(result.group(1))
输出 3
4.2 非贪婪模式
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.match('^hello.*?(\d+).*?(\d+)\sWorld.*Demo$',content)
print(result.group(1))
输出123
5、匹配 123 4567,(.*?)
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.match('^hello\s+(.*?)\s+World.*Demo$',content)
print(result.group(1))
输出 123 4567
当匹配特殊字符时,用转义,$5.00,转为后 \$5\.00
二、re.search(),扫描整个字符串,比如hello,匹配模式第一个不一定必须为 h,可以是 e
网上其它文章写的比较混乱,没有写出re.match与re.search之间的区别,只是写了一个re.search使用案例,无法让新手朋友深入理解各个模式之间的区别
1、这里在用前面的案例,匹配 “123 4567”
import re
content= "hello 123 4567 World_This is a regex Demo"
result = re.search('ello\s+(.*?)\s+World.*Demo$',content) #从ello开始,re.match()必须从 h 开始
print(result.group(1))
输出 123 4567
2、匹配任意标签的内容,比如 <li data-view="4" class="active">,.*?active.*?xxxxx
<li data-view="4" class="active">
<a href="/3.mp3" singer="齐秦">往事随风</a>
re.search('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S) #当有多个 <li 时,唯有目标才有active,写入action即可指定此标签,.*?active.*?xxxxx
可以指定任意的标签,当active不同时,用正则re会比BeautifulSoup简单。
三、re.findall,列表语法来匹配字符串,不是 group(1)
以列表形式返回匹配的内容,语法与re.search一样
re.search:通过 group(1) 来匹配字符串
re.findall:通过列表语法来匹配字符串,不是 group(1)
re.findall('<li.*?active.*?singer="(.*?)">(.*?)</a>',html,re.S)
输出 [('齐秦', '往事随风')],列表内部是一个元组
print(result)
for x in result:
print(x[0]) #元组('齐秦', '往事随风'),对此元组的切片
四、re.compile
若多次复用某个写好的正则,用 re.compile("正则")
import re
content= """hello 12345 world_this
123 fan
"""
pattern =re.compile("hello.*fan",re.S)
result = re.match(pattern,content)
print(result)
print(result.group())
python基于正则爬虫-小笔记的更多相关文章
- Python 基于学习 网络小爬虫
<span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...
- 11.Python使用Scrapy爬虫小Demo(新手入门)
1.前提:已安装好scrapy,且已新建好项目,编写小Demo去获取美剧天堂的电影标题名 2.在项目中创建一个python文件 3.代码如下所示: import scrapy class movies ...
- Python 实现网络爬虫小程序
Python很简洁,也很强大,作为兴趣,值得一学! 下面这个程序实现的是从一个网站上下载图片,根据自己需要可以进行修改 import re import urllib def gethtml(ur ...
- python requests 正则爬虫
代码: import requests from multiprocessing import Pool from requests.exceptions import RequestExceptio ...
- 02 Python 函数的一些小笔记
函数的返回值 1.使用return可以返回多个值,如:return a,b 返回的数据类型是元组型2.接收返回的元组可以如:c,d=demo() (假设demo()返回a,b元组),需要注意的是,接收 ...
- python网络爬虫学习笔记
python网络爬虫学习笔记 By 钟桓 9月 4 2014 更新日期:9月 4 2014 文章文件夹 1. 介绍: 2. 从简单语句中開始: 3. 传送数据给server 4. HTTP头-描写叙述 ...
- python爬虫学习笔记
爬虫的分类 1.通用爬虫:通用爬虫是搜索引擎(Baidu.Google.Yahoo等)“抓取系统”的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 简单来讲就是尽可 ...
- 初探爬虫 ——《python 3 网络爬虫开发实践》读书笔记
零.背景 之前在 node.js 下写过一些爬虫,去做自己的私人网站和工具,但一直没有稍微深入的了解,借着此次公司的新项目,体系的学习下. 本文内容主要侧重介绍爬虫的概念.玩法.策略.不同工具的列举和 ...
- 基于python的pixiv爬虫
基于python的pixiv爬虫 1.目标 在和朋友吹逼过程中,聊到qq群机器人,突发奇想动手做一个p站每日推荐色图的色图机,遂学习爬虫. 目标: 批量下载首页推荐色图. 由于对qq机器人不熟,先利用 ...
- Python练习,网络小爬虫(初级)
最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入 www ...
随机推荐
- 自动化-Yaml文件写入函数封装
1.文件布局 打开文件修改读取方式为w dump函数写入文件 写入中文 使用allow_unicode=True class ReadConfiYaml: def __init__(self,yaml ...
- 【Bug记录】defineEmits 在 TS 项目报错
前言 单文件组件 <script setup> 是 Vue3.2 版本后非常流行的写法. 但是在开发过程中,按照官网使用 defineEmits ,结果项目报错,无法运行. 错误截图 Un ...
- 修改docker的默认存储位置及镜像存储位置
前言 Docker 默认安装的情况下,会使用 /var/lib/docker/ 目录作为存储目录,用以存放拉取的镜像和创建的容器等. 不过由于此目录一般都位于系统盘,遇到系统盘比较小,而镜像和容器多了 ...
- webpack3使用additionalData和prependData都不管用
10.css相关配置 utils.js sass: generateLoaders('sass', { indentedSyntax: true, implementation: require('n ...
- APEX实战第3篇:如何完善项目基础功能
上一篇<APEX实战第2篇:构建自己第一个APEX程序>虽然有了程序,但实在是太单薄! 本篇将会介绍一些数据库的基础知识,演示如何通过函数.触发器.存储过程.视图等来完善项目的一些基础功能 ...
- 【Ubuntu】安装OpenSSH启用远程连接
[Ubuntu]安装OpenSSH启用远程连接 零.安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server 壹.启动服务 使用如下代码启动Op ...
- 【Legged gym】关于Legged gym用到的roll_out_storages的batch的解析和一些PPO算法层面.config文件里参数的说明
1. 前言 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流. 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.1 yield 最开始发现于:rollout_stor ...
- 关于wireshark抓包工具抓取登录数据的一点心得
研究这个软件很久了,一直处于门外汉状态,今天终于用它抓到点有用的东西,做个简单的笔记吧,后面再继续完善. 最近研究跨域自动登录时一直不太顺利,今天就仿照网上前辈们的方法,用wireshark先抓一下手 ...
- 安卓智能手机芯片上audio的bringup
基于安卓平台的智能手机芯片回来后要做bringup.首先是负责平台的把安卓OS起来,然后就轮到各功能模块做bringup了,Audio是其中主要功能模块之一.Audio由于场景多和牵涉到的core多, ...
- 什么是AC自动机?如何实现?
什么是AC自动机? 是基于 Trie树 和 KMP失配指针 的一种高效多模式匹配算法.AC自动机能够一次构建,随后在遍历文本时同时匹配多个敏感词. AC自动机算法的典型应用是敏感词匹配,在各大社交媒体 ...