Skip to content

爬虫-正则表达式

难度:⭐⭐

1. 题目描述

题目描述

使用 requests 库爬取当前页面内容,然后使用正则表达式解析出文章标题和左侧菜单信息

2. 关键点

  • re.findall

3. 代码实现

点击显示代码
python
import re
import requests


def get_article_info(url):
    # 获取整个页面 html 内容
    r = requests.get(url)
    html = r.text

    # 获取页面标题
    re_s = '<title>(.*)</title>'
    title_info = re.findall(re_s, html)
    title = title_info[0]

    # 获取左侧菜单 html 内容
    re_s = '<ul class="list-group list-group-flush">(.*?)</ul>'
    menu_html_info = re.findall(re_s, html, re.DOTALL)
    menu_html = menu_html_info[0]

    # 从左侧菜单 html 内容中获取所有菜单信息
    re_s = '<a href="(.*)" class="text-secondary">(.*)</a>'
    menu_info = re.findall(re_s, menu_html)

    return title, menu_info


if __name__ == '__main__':
    url = 'https://python-abc.xyz/basic/5995/'
    title, menu_info = get_article_info(url)
    print('文章标题为:', title)
    print('菜单列表如下:')
    for menu in menu_info:
        print('链接:https://python-abc.xyz{};标题:{}'.format(*menu))

4. 运行示例

txt
文章标题为: 19-爬虫1_正则 | python-abc
菜单列表如下:
链接:https://python-abc.xyz/basic/8301/;标题:01-猜数游戏
链接:https://python-abc.xyz/basic/1376/;标题:02-统计字符数量
链接:https://python-abc.xyz/basic/9025/;标题:03-九九乘法表
链接:https://python-abc.xyz/basic/4007/;标题:04-注册登录系统_类实现
链接:https://python-abc.xyz/basic/6142/;标题:05-水仙花数
链接:https://python-abc.xyz/basic/1352/;标题:06-求阶乘
链接:https://python-abc.xyz/basic/4144/;标题:07-海龟绘图1_随机对称图形
链接:https://python-abc.xyz/basic/7764/;标题:07-海龟绘图2_数字时钟
链接:https://python-abc.xyz/basic/7859/;标题:07-海龟绘图3_黄金螺旋
链接:https://python-abc.xyz/basic/9354/;标题:07-海龟绘图4_太极图
链接:https://python-abc.xyz/basic/2668/;标题:08-杨辉三角形
链接:https://python-abc.xyz/basic/1092/;标题:09-检测密码强度
链接:https://python-abc.xyz/basic/9103/;标题:10-检测自己的 Python 等级
链接:https://python-abc.xyz/basic/6639/;标题:11-斐波那契数列
链接:https://python-abc.xyz/basic/4322/;标题:12-矩阵1_转置
链接:https://python-abc.xyz/basic/8961/;标题:12-矩阵2_相加
链接:https://python-abc.xyz/basic/3984/;标题:12-矩阵3_相乘
链接:https://python-abc.xyz/basic/2989/;标题:13-回文数
链接:https://python-abc.xyz/basic/1253/;标题:14-字符串加密
链接:https://python-abc.xyz/basic/5982/;标题:15-排序1_选择排序
链接:https://python-abc.xyz/basic/9746/;标题:15-排序2_冒泡排序
链接:https://python-abc.xyz/basic/7394/;标题:15-排序3_插入排序
链接:https://python-abc.xyz/basic/6936/;标题:15-排序4_归并排序
链接:https://python-abc.xyz/basic/3002/;标题:15-排序5_快速排序
链接:https://python-abc.xyz/basic/6708/;标题:16-素数
链接:https://python-abc.xyz/basic/1853/;标题:17-非利克瑞尔数
链接:https://python-abc.xyz/basic/6887/;标题:18-读写文件
链接:https://python-abc.xyz/basic/5995/;标题:19-爬虫1_正则

5. 进阶思考

  1. 解析出问题描述