正则表达式练习

正则表达式练习

工具

pycharm

目的

python 复制代码
'''
https://www.77xsw.cc/fenlei/1_1/:第一页的网址
https://www.77xsw.cc/fenlei/1_2/:第二页的网址
...
https://www.77xsw.cc/fenlei/1_10/:第十页的网址
'''

代码

python 复制代码
import requests
import re
import json

novel_list = []

for i in range(1,11):
    # 请求网址
    url = 'https://www.77xsw.cc/fenlei/1_' + str(i) + '/'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
    # 发送请求
    response = requests.get(url, headers=headers)
    # print(response.text)
    # 数据处理 确定正则表达式规则时,看抓取到的没有美化的响应结果
    data = response.text
    # 用中文不能匹配中文的标点符号
    # rule = '<span class="sp_2"><a href="(.*?)".*?title="[\u4e00-\u9fa5]*">([\u4e00-\u9fa5]*?)</a></span><span class="sp_3">'  # not
    # rule = '<span class="sp_2"><a href="(.*?)".*?title=".*?">(.*?)</a></span><span class="sp_3">'  # ok
    rule = '<span class="sp_2"><a href="(.*?)".*?>(.*?)</a></span><span class="sp_3">'
    result = re.findall(rule,data)  # 返回值为多个匹配结果组成的列表
    for novel in result:
        novel_list.extend(result)
    # print(novel_list)
novel_tuple = tuple(novel_list)  # 去重
novel_dict = dict([i[1], i[0]] for i in novel_tuple)  # 转为字典
print(novel_dict,len(novel_dict))  # 一页40个,10页应该有400个,结果为397个,含有重复的
# 保存数据 json格式
with open('novel.json', 'w', encoding='utf8') as f:
    json.dump(novel_dict,f,indent=2,ensure_ascii=False)

运行结果

见资源

相关推荐
半梦半醒*1 天前
正则表达式
linux·运维·开发语言·正则表达式·centos·运维开发
PyHaVolask1 天前
Python进阶教程:随机数、正则表达式与异常处理
python·正则表达式·异常处理·随机数生成
神秘人X7072 天前
正则表达式笔记
正则表达式·shell·脚本
然我4 天前
前端正则面试通关指南:一篇吃透所有核心考点,轻松突围面试
前端·面试·正则表达式
Lynnxiaowen6 天前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
前端世界9 天前
Python 正则表达式实战:用 Match 对象轻松解析拼接数据流
python·正则表达式·php
Edward.W10 天前
别再和正则表达式死磕了!这套AI工具集让你的开发效率翻倍⚙️[特殊字符]
人工智能·正则表达式
beijingliushao10 天前
58-正则表达式
数据库·python·mysql·正则表达式
雷达学弱狗10 天前
正则表达式,字符串的搜索与替换
正则表达式
良木林10 天前
JS中正则表达式的运用
前端·javascript·正则表达式