正则表达式

import re
result = re.match("\w{4,20}@163\.com$","hello@163.com")
if result:print("match success!")print("match content:", result.group())
else:print("math fail!")
  • 分组 |

    import re
    result = re.match("^[0-9][0-9]$|^100$","77") #正则表达式匹配0~100之间的数字 |左右任意一个满足即可匹配
    if result:print("match success!")print("match content:", result.group())
    else:print("math fail!")
    
  • 整体()

    (abc)将括号中的字符作为一个整体进行匹配分组

    分组从1开始计数,第一个小括号为组1

    \w{4,20}@(163|126|qq|sina)\.com$ #匹配各种邮箱
    

    提取区号和电话号码

    import re
    result = re.match("(\d{3,4})-(\d{7,8})","023-12345678")
    if result:print("match success!")print("区号:", result.group(1)) #分组print("电话号码:", result.group(2))  # 分组
    else:print("math fail!")
    
  • 引用分组 \

    注意转义字符

    import re
    result = re.match("<([a-zA-Z0-9]+)><([a-zA-Z0-9]+)>.*</\\2></\\1>","<div><h1>this is a string</h1></div>") #引用第一个分组,表示与第一组内容一致 \是转义字符
    if result:print("match success!")print("match content:", result.group())else:print("math fail!")
    
  • 分组起别名(?P<name>)

  • 分组引用别名(?P=name)

    import re
    result = re.match("<(?P<name1>[a-zA-Z0-9]+)><(?P<name2>[a-zA-Z0-9]+)>.*</(?P=name2)></(?P=name1)>","<div><h1>this is a string</h1></div>") #引用第一个分组,表示与第一组内容一致 \是转义字符
    if result:print("match success!")print("match content:", result.group())else:print("math fail!")
    
  • re.findall()

    返回满足正则条件的所有内容,是一个列表

    import re
    result = re.findall("\d+","阅读次数999,转发次数888,评论次数777") #返回一个列表
    if result:print("match success!")print("match content:", result)
    else:print("math fail!")
    
  • re.search()

    找到第一个匹配即返回 类似find函数

  • re.match()

    从字符串0号位置开始匹配,如果0号位置不满足即返回失败 即使从1号位可以匹配也是匹配失败

  • re.sub()

    用一个新的字符串替换原来内容中满足正则表达式的内容

    import re
    result = re.sub("\d+","1000","阅读次数999,转发次数888,评论次数777") # 把字符串中所有的正则替换为1000,返回替换后的内容
    if result:print("match success!")print("match content:", result)
    else:print("math fail!")
    
  • re.split()

    分割内容

    import re
    result = re.split(":| ","info:hello@163.com tom jerry")
    if result:print("match success!")print("match content:", result)
    else:print("math fail!")
    

python默认是贪婪匹配,即总是尝试匹配尽可能多的字符
+ * {} ?后面加?变成非贪婪,即只匹配一次就结束

获取电影天堂的电影

r.encoding = 'utf-8'
import re
import requests
def get_url(url):try:kv = {"user-agent":"Mozilla/5.0"}r = requests.get(url,headers=kv)r.raise_for_status()r.encoding = 'gb2312'demo = r.textlinks = re.findall("ulink\">(.*?)</a>", demo)for link in links:print(link)except Exception as e:print(e)if __name__ == '__main__':head = "https://www.ygdy8.net/"url = "https://www.ygdy8.net/html/gndy/dyzz/list_23_2.html"get_url(url)

python正则表达式【电影天堂爬取】相关推荐

  1. Python小工具-电影天堂爬取电影下载链接

    import requests import bs4# 获取单独的url def movie_info(url):'''内容标签:<div id="Zoom">下载链接 ...

  2. 基于Python的电影票房爬取与可视化系统的设计与实现

    博主介绍:✌全网粉丝30W+,csdn特邀作者.博客专家.CSDN新星计划导师.java领域优质创作者,博客之星.掘金/华为云/阿里云/InfoQ等平台优质作者.专注于Java技术领域和毕业项目实战✌

  3. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  4. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  5. Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(下)

    在Python爬虫实战(1) | 爬取豆瓣网排名前250的电影(上)中,我们最后爬出来的结果不是很完美,这对于"精益求精.追求完美的"程序猿来说怎么能够甘心 所以,今天,用pyth ...

  6. Python实战之如何爬取猫眼电影排行?本文详解

    本节中,我们利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容.requests比urllib使用更加方便,而且目前我们还没有系统学习HTML解析库,所以这里就选用正则表达式来作为 ...

  7. python 爬虫实例 电影-Python爬虫教程-17-ajax爬取实例(豆瓣电影)

    Python爬虫教程-17-ajax爬取实例(豆瓣电影) ajax: 简单的说,就是一段js代码,通过这段代码,可以让页面发送异步的请求,或者向服务器发送一个东西,即和服务器进行交互 对于ajax: ...

  8. python爬取豆瓣排行榜电影(静态爬取)(二次爬取)

    目录 python爬取豆瓣排行榜电影(静态爬取) 获取网站url 获取网站headers get请求访问url BeautifulSoup解析网站 爬取html数据 完整代码 python爬取豆瓣排行 ...

  9. 爬虫入门——电影top250爬取

    爬虫入门(自用) 第一篇 Python 爬虫入门之 电影top250爬取 文章目录 爬虫入门(自用) 前言 一.前置知识 requests库 正则表达式(re库) 二.使用步骤 1.引入库 2.小试牛 ...

最新文章

  1. 机房重构——报表问题总结
  2. 神器与经典--sp_helpIndex
  3. 被Python「苦虐」的日子太惨了!
  4. 哈尔特征(Haar-like features)
  5. 【震惊】史上最牛的市场推广/营销
  6. 快收下这份“数据库运作实践”秘制口诀
  7. Cocos2d-html5 2.2.2的屏幕适配方案
  8. httpd配置ResponseHeader
  9. Visual studio 2013 连接MySQL数据库的设置。
  10. 关于64位win7环境下VS连接oracle数据库的问题
  11. 声明 styleable 与声明 attr 的区别
  12. 微信小程序开发的完整人性化版攻略
  13. 瑞友虚拟化系统搭建服务器,瑞友云电脑虚拟化系统 | 瑞友天翼-应用虚拟化|远程接入|桌面虚拟化|国内虚拟化整体解决方案领导者...
  14. 百词斩不复习_不背单词好用还是百词斩好用?
  15. html5怎么给视频加字幕,怎么给视频添加文字 怎么用Premiere Pro cs6给视频中添加文字...
  16. 小米平板1android驱动,小米平板3usb驱动
  17. 计算机上e盘拒绝访问,E盘拒绝访问怎么办?Win7系统E盘拒绝访问的方法
  18. hadoop性能测试
  19. Linux的20个常用命令
  20. linux关闭进程命令kill

热门文章

  1. 2020年第十一届蓝桥杯决赛JAVA B G题“皮亚诺曲线距离“
  2. python cs开发框架_用Python编写一个简单的CS架构后门的方法
  3. Makefile的宏
  4. 用体渲染的方法在Unity中渲染云(18/4/4更新)
  5. 私域运营的两点经验分享
  6. 用nodejs链接mysql并从其中提取数据
  7. 凌度多功能后视镜行车记录仪HS850B 多重守护行车安全
  8. 秋招总结——字节跳动,三轮面试,四个小时,灵魂拷问,结局我哭了但下次还敢
  9. 大病不出县,移动云助力彰武县打造“县域医共体”示范点
  10. 声明式编程比命令式编程更好吗? NO! 你可能陷入了声明式编程的迷幻中!