Python正则表达式(持续更新,各种字符串筛选,总有一款适合您当前的功能)(2)

简介: Python正则表达式(持续更新,各种字符串筛选,总有一款适合您当前的功能)(2)

3、获取标签的文本值·例如:span标签、a标签文本

我这里处理的是a标签的文本,咱们没有使用框架,相对来说纯使用正则表达式稍微麻烦一些,但是处理方式还是不复杂的,可以看到我获取a标签所有内容后,将左右的标签符号去掉就剩下中间的文本了,还是挺容易获取的。如果是span标签,您直接把a标签替换成span标签就行了。


获取方法1:

import re
import requests
'''
获取某网站·某个·class元素下·所有内容·返回字符串·根据字符串匹配超链接的文本内容
'''
url = "https://book.zongheng.com/showchapter/1243826.html"
context = requests.get(url).content.decode("utf-8")
result1 = re.findall(r"<ul class=\"chapter-list clearfix\">.*?</ul>", context, re.S)
a_href = re.findall(r'<a.*?>.*?</a>', result1[0])
data_list = []
left_text = ">"
right_text = "</a>"
for item in a_href:
    result = re.findall(r">.*?</a>", item)
    for item1 in result:
        item1 = item1.replace(left_text, "", 1).replace(right_text, "", 1)
        data_list.append(item1)
for item in data_list:
    print(item)
print("爬取成功:", len(data_list))

结果呈现,可以看到138条都筛选出来了。


image.png


获取方法2:

通过【()】的方法直接获取我们需要的内容


import re
import requests
'''
获取某网站·某个·class元素下·所有内容·返回字符串·根据字符串匹配超链接的文本内容
'''
url = "https://book.zongheng.com/showchapter/1243826.html"
context = requests.get(url).content.decode("utf-8")
result1 = re.findall(r"<ul class=\"chapter-list clearfix\">.*?</ul>", context, re.S)
a_href = re.findall(r'<a.*?>.*?</a>', result1[0])
data_list = []
left_text = ">"
right_text = "</a>"
for item in a_href:
    result = re.findall(r">(.*?)</a>", item)
    data_list.append(result[0])
for item in data_list:
    print(item)
print("爬取成功:", len(data_list))


这种方法直接就能获取我们需要的内容:


image.png


4、key:value格式的数据

在下图中可以看到字典格式的数据,{"adv_type":"bookDirectory00","adv_res":"zongheng","pos":""}我们想要其中的"adv_type"的值,那么,我们需要用另外一种正则表达式了:


image.png


import re
import requests
'''
获取key:value的数据
'''
url = "https://book.zongheng.com/showchapter/1243826.html"
context = requests.get(url).content.decode("utf-8")
result1 = re.findall('"adv_type":"(.*?)"', context)
for item in result1:
    print(item)

结果示例:

image.png



5、匹配url

1、匹配短连接

r'(http[|s]?://[^\s]*/)'


import re
import requests
'''
提取字符串中的链接
'''
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
url_info = """6.69 Cuf:/ 售价888一碗的面!自己在家做需要花多少钱?# 百蟹面 # 六虾面   https://v.douyin.com/rhkGMfh/ 复制此链接,打开Dou音搜索,直接观看视频!"""
short_url = re.findall(r'(http[|s]?://[^\s]*/)', url_info)[0]
print(short_url)
url = requests.get(url=short_url, headers=headers).url
item_id = url.split('/')[4][0:19]
url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={0}".format(item_id)
html = requests.get(url, headers=headers)
title = html.json()['item_list'][0]['desc']  # 标题获取
print(title)

结果获取:


image.png


2、匹配长连接

r"""(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"""

import re
import requests
'''
获取某网站·获取所有的长链接
'''
url = "https://book.zongheng.com/showchapter/1243826.html"
context = requests.get(url).content.decode("utf-8")
result1 = re.findall(r"<ul class=\"chapter-list clearfix\">.*?</ul>", context, re.S)
# result1中包含多个长连接
rule = r"""(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"""
result2 = re.findall(rule, result1[0], re.S)
data_list = []
for item in result2:
    new_url = "{0}://book.zongheng.com{1}".format(item[0], item[2])
    data_list.append(new_url)
for item in data_list:
    print(item)
print("获取连接:", len(data_list))


匹配的内容需要拼接一下:


image.png


3、各类网址url列表


image.png

image.png

4、网页中中文提取

r"[\u4E00-\u9FA5]"


import re
import requests
'''
获取某网站·获取网站中所有中文
'''
url = "https://book.zongheng.com/showchapter/1243826.html"
context = requests.get(url).content.decode("utf-8")
rule = r"[\u4E00-\u9FA5]"
result2 = re.findall(rule, context, re.S)
count = 0
for item in result2:
    if count % 10 == 0:
        print()
    print(item, end="")
    count += 1
print("\n共计提取:", len(result2), "个中文")


结果展示:

image.png



总结:

暂时先写这些,后面随时用到随时写。  

相关文章
|
10天前
|
Python
1167: 分离字符串(PYTHON)
1167: 分离字符串(PYTHON)
|
26天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
28天前
|
大数据 Python
使用Python查找字符串中包含的多个元素
本文介绍了Python中查找字符串子串的方法,从基础的`in`关键字到使用循环和条件判断处理多个子串,再到利用正则表达式`re模块`进行复杂模式匹配。文中通过实例展示了如何提取用户信息字符串中的用户名、邮箱和电话号码,并提出了优化策略,如预编译正则表达式和使用生成器处理大数据。
20 1
|
28天前
|
数据可视化 数据挖掘 Python
Python数据可视化:探索Matplotlib的强大功能
数据可视化在如今的数据分析和展示中扮演着至关重要的角色。本文将介绍Python中常用的数据可视化库Matplotlib,深入探讨其功能和应用,帮助读者更好地利用Matplotlib进行数据可视化。
|
27天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据可视化:探索Matplotlib库的强大功能
本文将深入探讨Python中用于数据可视化的重要工具之一——Matplotlib库。通过介绍Matplotlib库的基本概念、常用功能和实际应用案例,帮助读者更好地了解如何利用Matplotlib创建各种吸引人的数据图表。
|
2天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
4天前
|
计算机视觉 Python
如何利用Python实现简单的图像处理功能
本文介绍了如何使用Python编程语言和相关库实现简单的图像处理功能。通过学习本文,读者将了解如何读取图像文件、调整图像大小、修改图像亮度和对比度、应用滤镜效果以及保存处理后的图像。这些技术将帮助读者快速入门图像处理领域,并为他们进一步探索更高级的图像处理技术打下基础。
|
6天前
|
JavaScript 前端开发 关系型数据库
旅游规划助手:结合Vue的交云性设计和Python的强大后端功能
【4月更文挑战第11天】本文探讨了如何使用Vue.js和Python(Flask或Django)构建旅游规划助手应用,简化旅行规划。首先,确保安装了Python、Node.js、数据库系统和Git。接着,介绍如何用Python搭建后端API,分别展示了Flask和Django的例子。然后,利用Vue.js初始化前端项目,结合Vuex和Vue Router构建用户界面。最后,通过Axios实现前端与后端的数据通信。这样的架构有利于团队协作和代码维护,便于扩展应用功能。
|
10天前
|
Python
171: 字符串的倒序(python)
171: 字符串的倒序(python)
|
27天前
|
JSON C++ 数据格式
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
85 0

热门文章

最新文章