No.6-正则表达式

1.介绍

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
用途:用于匹配特定位置的字符串方便拿到所需的内容 + 检验当前字符是否符合要求 + 替换特定字符串

import re  # 导入库
1.普通字符
字符描述
[a-zA-Z0-9]匹配26个大小写英文字母和数字
[a]匹配特定字符串-a
2.常用字符
字符描述
.匹配换行符以外的任意字符
\w匹配字母/数字/下划线 = [a-zA-Z0-9_]
\W匹配非(字母/数字/下划线)
\s匹配任意的空白符(包括换行)
\S匹配非空白符,不包括换行
\d匹配数字
\D匹配非数字
\n匹配换行符
\t匹配制表符
^匹配字符串的开始
$匹配字符串的结尾
(a或b)匹配a字符串或b字符串
[…]匹配字符组中的字符
[^…]匹配非字符组中的字符
3.限定字符
字符描述
*出现 0 次或多次 >= 0
+出现 1 次或多次 >= 1
?出现 1 次或 0 次
{n}重复 n 次
{n, }重复 n 次或更多次 >= n
3.贪婪匹配与惰性匹配
字符描述
.*匹配符合的所有字符串
.*?尽可能少的匹配,最小匹配

2.Re匹配豆瓣250电影信息

# coding:utf-8
# @Time:2021/8/9 21:47
# @Author:YuFei
# @File: 3.手刃豆瓣250.py
# @Software:PyCharm

import requests
import re
import csv  # 方便数据分析


head = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
url = "https://movie.douban.com/top250"
# print(resp.headers)  测试访问
# print(resp.text)
obj = re.compile(r'<li>.*?<div class="item">.*?<span class="title">(?P<name>.*?)</span>.*?'
                 r'<p class="">.*?<br>(?P<year>.*?)&nbsp.*?'
                 r'<span class="rating_num" property="v:average">(?P<score>.*?)</span>.*?'
                 r'<span>(?P<num>.*?)人评价</span>', re.S)
# 开始匹配
f = open("data.csv", mode='w', encoding="utf-8")
csv_writer = csv.writer(f)
for i in range(0, 10):
    base_url = url + "?start=25&filter=" + str(i)
    resp = requests.get(base_url, headers=head)
    page_content = resp.text
    result = obj.finditer(page_content)
    for item in result:
        # print(item.group("name"), end="\t")
        # print(item.group("year").strip(), end="\t")
        # print(item.group("score"), end="\t\t")
        # print(item.group("num"))
        dic = item.groupdict()
        dic['year'] = dic['year'].strip()
        csv_writer.writerow(dic.values())
f.close()
print("over")
resp.close()

Tips:可以在 在线正则表达式测试 练习Re

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值