正则表达式练习

正则表达式练习

工具

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)

运行结果

见资源

相关推荐
ths51214 小时前
Python 正则表达式实战指南:从入门到精通(12 个高频案例)(三)
python·正则表达式
ths51215 小时前
Python 正则表达式学习笔记(小白超详细版)(一)
python·正则表达式
kcuwu.3 天前
Python 正则表达式从入门到实战
数据库·python·正则表达式
羊小蜜.3 天前
Mysql 07: 正则表达式查询(REGEXP)全解
数据库·mysql·正则表达式
Dxy12393102163 天前
正则表达式如何匹配提取文章日期
数据库·mysql·正则表达式
Dxy12393102166 天前
Python正则表达式判断姓名:详细解析
python·mysql·正则表达式
一个小猴子`8 天前
快速了解正则表达式
正则表达式
禾小西8 天前
Java中使用正则表达式核心解析
java·python·正则表达式
Amumu121388 天前
Js:正则表达式(一)
开发语言·javascript·正则表达式
榴莲omega9 天前
正则表达式入门与实战指南
javascript·正则表达式·js八股