正则表达式练习

正则表达式练习

工具

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)

运行结果

见资源

相关推荐
铉铉这波能秀12 小时前
正则表达式从入门到精通(字符串模式匹配)
java·数据库·python·sql·正则表达式·模式匹配·表格处理
利刃大大12 小时前
【JavaSE】Stream API && Optiona类 && 正则表达式
正则表达式
Dxy12393102161 天前
Python的正则表达式如何做数据校验
开发语言·python·正则表达式
Tranquil_ovo1 天前
【RegExp】正则表达式 - 基础语法
正则表达式
課代表1 天前
正则表达式中的“*”为何不是通配符?
正则表达式·dos·bat·批处理·匹配·通配符·转义
[J] 一坚2 天前
Shell 脚本解锁 curl/iptables/Nginx 日志分析等实战用法
linux·服务器·正则表达式·系统架构·自动化
Dxy12393102162 天前
Python的正则表达式入门:从小白到能手
服务器·python·正则表达式
realhuizhu3 天前
是猫踩键盘还是乱码?不,这是你刚写的正则表达式
正则表达式·regex·代码质量·开发效率·ai编程助手
聊天QQ:180809517 天前
探索A*、JPS+算法在多机器人与单机器人场景下结合DWA的改进与对比
正则表达式
qq_251533598 天前
如何使用 Python 正则表达式去除空格/制表符/换行符?
开发语言·python·正则表达式