20211305魏子俊《Python程序设计》实验四Python综合实践实验报告

课程:《Python程序设计》
班级:2113
姓名:魏子俊
学号:20211305
实验教师:王志强
实验日期:2022年5月28日
必修/选修:公选课

实验内容

Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)

注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。

批阅:注意本次实验不算做实验总分,前三个实验每个实验10分,累计30分。本次实践算入综合实践,打分为25分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分

(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。

注意:每个人的实验不能重复,课代表先统计大家做的内容并汇总,有重复的需要自行协商。

实验代码

爬虫爬取百度热搜榜内容,存入文件,并制作成可视化二维码,通过手机扫描二维码,可以获取百度热搜内容。
爬虫爬取百度热搜榜.py

import requests

from bs4 import BeautifulSoup

from datetime import datetime

headers = {
    'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 "
                 "Safari/537.36 SLBrowser/7.0.0.12151 SLBChan/103"
}
response = requests.get("https://www.baidu.com/", headers=headers)
features="html.parser"
bsObj = BeautifulSoup(response.text)
resDate = response.headers.get('Date')
print(resDate)
nameList = bsObj.findAll("li", {"class": {"hotsearch-item odd", "hotsearch-item even"}})
tests = []
for name in nameList:
    tests.append(name.getText())
tests.sort()
with open('1.txt','w',encoding='utf-8') as f:
    for news in tests:
        news = news[0:1] + " " + news[1:]
        print(news)
        f.write(news+'\n') 

1.txt文件内容

import qrcode

with open('1.txt','r',encoding='utf-8') as f:
    list =[]
    for i in f:
        i = i.split("热")[0]
        i = i.split("\ue62e ")[-1]
        i = i.strip("\n")
        list.append(i)
    print(list)
    a=list[0]
    b=list[1]
    c=list[2]
    d = list[3]
    e = list[4]
    f=list[5]
qr = qrcode.QRCode()
qr.add_data(a+'\n')
qr.add_data(b+'\n')
qr.add_data(c+'\n')
qr.add_data(d+'\n')
qr.add_data(e+'\n')
qr.add_data(f+'\n')
img = qr.make_image()
img.save("some_file.png")

实验过程

1.首先在python中下好requests库、bs4库和datetime库
2.headers为请求头,我在百度首页上找到了我的机器的用户代理,使网站服务器可以识别我的机器的操作系统版本、CPU版本、浏览器版本等信息。使用requests模块的方法向目标url发送携带请求头的请求,调用bs4模块解析html源码,调用datetime库获取response.headers的时间。
3.找到热搜榜的类,并添加热搜榜的内容,创建列表并将列表排序存入1.txt文件中。
4.调用qrcode库,由于qr.add_data()函数不能直接提取文件中的信息,将文件中的信息以列表的形式提取出来,并去掉前后的没用的编码字符。将每一个元素设置为一个变量存入二维码中在其后加上换行符,生成二维码,“0”代表置顶信息。
5.通过手机扫描二维码会得到相应百度热搜的信息。


在华为云上运行代码


通过本次实践上网学习了爬虫的相关知识,大致了解了爬虫的相关信息,并可以爬取一些网站信息,在这次实践过程中也出现了许多问题。

问题与解决方法

  • 问题1:存入1.txt的文件中有“热”这个词,但是我并不想让它在二维码中出现。
    解决方法:用split方法删除了“热”。
  • 问题2:因为编码问题,输出会带有“\ue62e”的字符。
    解决方法:再一次通过split方法删除前面的字符。
  • 问题3:WINSCP上无法打开png文件。
    解决方法:将WINSCP中生成的二维码拖入windows再进行扫码。
  • 问题4:华为云服务器上无法下载qrcode库。
    解决方法:上网查找了相关资料,更新了pip,并使用python3实现代码运行。

课程总结、感悟

  • 课程总结
    搭建python环境
    变量赋值和数据类型
    for循环和while循环及应用
    输入和输出
    列表、字典、元组、集合的操作
    函数含义及应用

    读取和写入文件
    socket套接字
    Python操作数据库
    python爬虫
  • 感悟
    通过python程序设计这门课程和王老师认真细致的教学,我逐渐的了解到了python的魅力,通过学习我明白了python的强大之处。它极其方便,拥有随时可以调用的库,简洁明了的语法,非常方便实用。开始的时候我用的VScode来编写python程序,但在老师的讲解和建议下我使用了pycharm进行编写,发现方便了许多,通过在云班课的学习资料,我也能复习每节课的知识点,并自行打一些代码复习知识点。




  • 课程建议
    1.希望老师可以把课上打的代码和ppt发到微信群中,便于同学们复习。
    2.老师可以在课堂上进行一些代码练习,有的同学在课后练习的过程中会遇到许多问题,不知道如何解决,并感觉出现的问题很微小,花费时间去查找解决方法也很耽误时间,这样问题就会越积累越多,到最后有无从下手、力不从心的感觉,也可以在课后进行一些代码的小测试方便同学了解自己对于知识的掌握情况。
    3.我觉得王老师讲解的过程真的非常细心也很耐心、温柔,我以前对python就有一些了解,通过这门课程我对python的知识了解的更加全面,而且明白了以前没有接触过的正则表达式,非常非常非常感谢王老师的淳淳教诲!
  • 人生苦短,我用python
posted @ 2022-05-30 23:55  魏子俊  阅读(98)  评论(0编辑  收藏  举报