正则表达式练习

正则表达式练习

工具

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)

运行结果

见资源

相关推荐
ybdesire7 小时前
ReDoS(正则表达式拒绝服务攻击)理解与实测
正则表达式·漏洞
weixin_4331793312 小时前
python - 正则表达式Regex
python·正则表达式
wayz112 天前
正则表达式:从入门到精通
java·python·正则表达式·编辑器
梨落秋霜3 天前
Python入门篇【正则表达式】
python·mysql·正则表达式
吾诺3 天前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
V1ncent Chen4 天前
SQL大师之路 09 模式匹配(正则表达式)
数据库·sql·mysql·正则表达式·数据分析
程序员杰哥5 天前
Jmeter正则表达式提取器和JSON提取器基础用法
自动化测试·软件测试·测试工具·jmeter·正则表达式·json·测试用例
酱紫学Java6 天前
数据安全基础:正则表达式 (Regex) 从入门到实战
python·正则表达式
「QT(C++)开发工程师」6 天前
C++11 新特性 正则表达式、随机数库、元组
c++·正则表达式
椰猫子6 天前
正则表达式和爬虫
正则表达式