【Python百日刷题计划】Day8~网页分析和一些基础题目

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【Python百日刷题计划】Day8~网页分析和一些基础题目

文章目录

📚前言

📄题目一

📜题目要求

📜我的解析

📜我的答案

📄题目二

📜我的解析

📜我的答案

📄题目三

📜题目要求

📜我的解析

📜我的答案

📄题目四

📜写在前面

📜题目要求

📜我的答案

📜我的解析:

📚结语


📄题目一

📜题目要求

image.gif编辑

📜我的解析

本道题目难度较小主要考察了内置函数的基本使用方法

📜我的答案

def main(lst):
    return sorted(lst,key=abs)[len(lst) - 1]
image.gif

📄题目二

image.gif编辑

📜我的解析

本题难度较小,主要考察列表,匿名函数,列表推导式的基本使用方法。

📜我的答案

def main(lst):
    is_odd = lambda l : l % 2 == 1        #判断列表中元素是否为奇数的函数
    return [i for i in filter(is_odd,lst)]#生成器中的列表推导式
image.gif

filter内置函数的使用方法------>>【http://t.csdn.cn/NV79F

列表推导式的使用方法 ------>> 【http://t.csdn.cn/eIkZj

📄题目三

📜题目要求

image.gif编辑

📜我的解析

本题难度很小主要考察的是if-else语句和格式化输出

📜我的答案

print('What kind of drink would you like?')
kind_of_drink = input()
if kind_of_drink == 'cola':
    print('Below is your cola. Please check it!')
else:
    print('The {} has been sold out!'.format(kind_of_drink))
image.gif

📄题目四

📜写在前面

写本道题目之前需要掌握以下知识点哟,不清楚的可以翻看我之前的博客或者是网上查找相应的视频来回顾

    • 知识点一👉urlib库的使用中请求对象的定制使用urllib来获取源码
    • 知识点二👉re模块的基本使用方法
    • 知识点三👉json模块的基本使用方法
    • 知识点四👉正则匹配(用于对网页想要信息的提取和不想要信息的剔除
    • 知识点五👉文件的基本使用方法

    📜题目要求

    👉获取某瓣电影排名前十页电影的<"电影排名" "电影标题" "豆瓣评分"和"评论人数">并且将爬取下来的数据放到名为<豆瓣电影信息>的文件中

    image.gif编辑

    📜我的答案

    import json
    import re
    import urllib.request
    def html_get(url):
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
        }
        request = urllib.request.Request(url=url, headers=headers)
        response = urllib.request.urlopen(request).read().decode('utf-8')
        return response
    def page_info(h):
        com = re.compile(
            '<div class="item">.*?<div class="pic">.*?<em .*?>(?P<电影排名>\d+).*?<span class="title">(?P<电影标题>.*?)</span>'
            '.*?<span class="rating_num" .*?>(?P<豆瓣评分>.*?)</span>.*?<span>(?P<评论人数>.*?)评价</span>', re.S)
        ret = com.finditer(h)
        for i in ret:
            yield {
                "电影排名": i.group("电影排名"),
                "电影标题": i.group("电影标题"),
                "豆瓣评分": i.group("豆瓣评分"),
                "评论人数": i.group("评论人数"),
            }
    def main(num):
        url = 'https://movie.douban.com/top250?start=%s&filter=' % num
        douban_html = html_get(url)
        res = page_info(douban_html)
        print(res)
        f=open("豆瓣电影信息","a",encoding="utf8")
        for obj in res:
            print(obj)
            data=json.dumps(obj,ensure_ascii=False)
            f.write(data+"\n")
        f.close()
    if __name__ == '__main__':
        count = 0
        for page_num  in range(10):
            main(count)
            count += 25
    输出结果:
    image.gif

    输出结果:

    image.gif编辑

    知识点:

    flags有很多可选值:

    image.gif编辑

     

      • re.I(IGNORECASE)忽略大小写,括号内是完整的写法
      • re.M(MULTILINE)多行模式,改变^和$的行为
      • re.S(DOTALL)点可以匹配任意字符,包括换行符
      • re.L(LOCALE)做本地化识别的匹配,表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境,不推荐使用
      • re.U(UNICODE) 使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
      • re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释

      📜我的解析:

      html_get(url)函数:

        • 作用:

        获取豆瓣对应网址的网页源码

          • 参数:

          要获取信息的网址

            • 返回值:

            豆瓣对应网址的网页源码

            ✨ page_info(h)函数

              • 作用:

              该函数的作用是匹配获取到的网页源码中的"电影排名" "电影标题" "豆瓣评分"和"评论人数"

                • 参数:

                对应网址的网页源码

                  • 返回值:

                  一个生成器函数

                  ✨ main(num)函数

                    • 作用:

                    顾名思义该函数是程序中的主函数,调用它获取对应页数的<"电影排名" "电影标题" "豆瓣评分"和"评论人数">并且将爬取下来的数据放到名为<豆瓣电影信息>的文件中

                      • 参数:

                      num = 0 则表示第一页,num = 25则表示第二页,num = 50则表示第三页,以此类推,因为每页有25部电影。

                        • 返回值:

                        将爬取下来的数据放到名为<豆瓣电影信息>的文件中

                        相关文章
                        |
                        21天前
                        |
                        缓存 Rust 算法
                        从混沌到秩序:Python的依赖管理工具分析
                        Python 的依赖管理工具一直没有标准化,主要原因包括历史发展的随意性、社区的分散性、多样化的使用场景、向后兼容性的挑战、缺乏统一治理以及生态系统的快速变化。依赖管理工具用于处理项目中的依赖关系,确保不同环境下的依赖项一致性,避免软件故障和兼容性问题。常用的 Python 依赖管理工具如 pip、venv、pip-tools、Pipenv、Poetry 等各有优缺点,选择时需根据项目需求权衡。新工具如 uv 和 Pixi 在性能和功能上有所改进,值得考虑。
                        80 35
                        |
                        29天前
                        |
                        机器学习/深度学习 数据可视化 数据挖掘
                        使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
                        在现代数据分析中,高维时间序列数据的处理和预测极具挑战性。基于矩阵分解的长期事件(MFLEs)分析技术应运而生,通过降维和时间序列特性结合,有效应对大规模数据。MFLE利用矩阵分解提取潜在特征,降低计算复杂度,过滤噪声,并发现主要模式。相比传统方法如ARIMA和深度学习模型如LSTM,MFLE在多变量处理、计算效率和可解释性上更具优势。通过合理应用MFLE,可在物联网、金融等领域获得良好分析效果。
                        57 0
                        使用Python实现基于矩阵分解的长期事件(MFLEs)时间序列分析
                        |
                        23天前
                        |
                        数据采集 数据可视化 数据挖掘
                        金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
                        本文探讨了金融资产波动率建模中的三种主流方法:GARCH、GJR-GARCH和HAR模型,基于SPY的实际交易数据进行实证分析。GARCH模型捕捉波动率聚类特征,GJR-GARCH引入杠杆效应,HAR整合多时间尺度波动率信息。通过Python实现模型估计与性能比较,展示了各模型在风险管理、衍生品定价等领域的应用优势。
                        205 66
                        金融波动率的多模型建模研究:GARCH族与HAR模型的Python实现与对比分析
                        |
                        13天前
                        |
                        并行计算 安全 Java
                        Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
                        在Python开发中,GIL(全局解释器锁)一直备受关注。本文基于CPython解释器,探讨GIL的技术本质及其对程序性能的影响。GIL确保同一时刻只有一个线程执行代码,以保护内存管理的安全性,但也限制了多线程并行计算的效率。文章分析了GIL的必要性、局限性,并介绍了多进程、异步编程等替代方案。尽管Python 3.13计划移除GIL,但该特性至少要到2028年才会默认禁用,因此理解GIL仍至关重要。
                        71 16
                        Python GIL(全局解释器锁)机制对多线程性能影响的深度分析
                        |
                        1月前
                        |
                        数据可视化 算法 数据挖掘
                        Python时间序列分析工具Aeon使用指南
                        **Aeon** 是一个遵循 scikit-learn API 风格的开源 Python 库,专注于时间序列处理。它提供了分类、回归、聚类、预测建模和数据预处理等功能模块,支持多种算法和自定义距离度量。Aeon 活跃开发并持续更新至2024年,与 pandas 1.4.0 版本兼容,内置可视化工具,适合数据探索和基础分析任务。尽管在高级功能和性能优化方面有提升空间,但其简洁的 API 和完整的基础功能使其成为时间序列分析的有效工具。
                        74 37
                        Python时间序列分析工具Aeon使用指南
                        |
                        27天前
                        |
                        机器学习/深度学习 运维 数据可视化
                        Python时间序列分析:使用TSFresh进行自动化特征提取
                        TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
                        66 16
                        Python时间序列分析:使用TSFresh进行自动化特征提取
                        |
                        26天前
                        |
                        数据采集 缓存 API
                        python爬取Boss直聘,分析北京招聘市场
                        本文介绍了如何使用Python爬虫技术从Boss直聘平台上获取深圳地区的招聘数据,并进行数据分析,以帮助求职者更好地了解市场动态和职位需求。
                        |
                        2月前
                        |
                        机器学习/深度学习 数据采集 数据挖掘
                        使用Python实现智能食品消费市场分析的深度学习模型
                        使用Python实现智能食品消费市场分析的深度学习模型
                        149 36
                        |
                        2月前
                        |
                        数据可视化 算法 数据挖掘
                        Python量化投资实践:基于蒙特卡洛模拟的投资组合风险建模与分析
                        蒙特卡洛模拟是一种利用重复随机抽样解决确定性问题的计算方法,广泛应用于金融领域的不确定性建模和风险评估。本文介绍如何使用Python和EODHD API获取历史交易数据,通过模拟生成未来价格路径,分析投资风险与收益,包括VaR和CVaR计算,以辅助投资者制定合理决策。
                        108 15
                        |
                        2月前
                        |
                        机器学习/深度学习 数据采集 数据挖掘
                        使用Python实现智能食品消费趋势分析的深度学习模型
                        使用Python实现智能食品消费趋势分析的深度学习模型
                        151 18