20213226 实验四 Python综合实践

20213226 2021-2022-2 《Python程序设计》实验四 Python综合实践

课程:《Python程序设计》
班级: 2132
姓名: 刘思佳
学号:20213226
实验教师:王志强
实验日期:2022年5月29日
必修/选修: 公选课

1.实验内容

(Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。)

实验思路:使用爬虫爬取豆瓣新片具体信息并存入excel中,最后进行可视化分析。

2. 实验过程及结果

1.调用requests,使用正则表达式得到新上映电影的姓名、最初上映时间、评分以及评价人数,创建csv格式文档并将数据存入。具体代码如下:

import requests
import re

f = open("paihang_1.csv", mode="w", encoding='utf-8')
url = "https://movie.douban.com/chart"##目标网址
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/101.0.1210.53"
}##伪装成浏览器发送请求
resp = requests.get(url , headers=headers)
##print(resp.text)
page_content=resp.text
obj = re.compile(r' <div class="pl2">.*?<a href="https://movie.douban.com/subject/.*?/"  class="">(?P<name>.*?)/ <span style="font-size:13px;">.*?'
                 r'<p class="pl">(?P<time>.*?)/.*?'
                 r'<span class="rating_nums">(?P<score>.*?)</span>.*?'
                 r'<span class="pl">(?P<comment_number>.*?)</span>.*?<td valign="top">', re.S)##使用正则表达式爬取目标信息
result = obj.finditer(page_content)
for it in result:
    name = it.group("name").strip()
    time = it.group("time")
    score = it.group("score")
    comment_number = it.group("comment_number")
    f.write(f"{name},{time},{score},{comment_number}\n")
resp.close()##不要忘记关闭请求通道

2.使用excel打开csv文档。

image

3.安装pyecharts,pandas进行可视化分析。

image

image

from pyecharts.charts import Bar
from pyecharts import options as opts

bar = Bar()  # 绘制柱形图
bar.add_xaxis(["瞬息全宇宙","暗夜博士:莫比亚斯","网络炼狱:揭发N号房","唐顿庄园2","坏蛋联盟","万湖会议","渔港的肉子酱","迷失之城"])  # 加入X轴参数
bar.add_yaxis("评分", [7.8,5.7,7.7,8.4,6.4,7.3,8.2,8.2,5.6])  # 加入Y轴参数
bar.set_global_opts(title_opts=opts.TitleOpts(title="豆瓣新片榜单", subtitle="评分"))  # 生成图表标题和副标题
bar.render()

image

4.在华为云运行。

1.第一次运行直接将爬虫数据写入csv文档,可以从ls罗列显示出的csv的文档看出运行成功。

image

2.只看文档不够明显,将爬虫数据print出来。

在原代码最后加入 print(f"{name},{time},{score},{comment_number}\n")再次运行即可。
image

3. 实验过程中遇到的问题和解决过程

  • 问题1:qequests显示安装完成但始终报错。
    image

  • 问题1解决方案:将python添加为pycharm的python解析器。
    image

  • 问题2:爬虫数据跨行不顶头。
    image

  • 问题2解决方案:加.strip()去除左右两边多余空格。
    image

其他(感悟、思考等)

1.全科感想及总结
本学期学到的内容可以说是非常的丰富,有变量赋值、运算符及其优先级、基本数据类型、循环语句、列表、元组、字典、集合、字符串与正则表达、Python操作数据库、Python爬虫等等内容,可以说是在非常有限的时间最大程度的了解了python这门语言。而且我个人感觉在本学期的收获应当不仅限于是相关知识点的了解和掌握,更是在不断尝试,遇到困难,然后再努力寻求解决方案的过程中一点点磨练出的耐心,一步步扎实的基础,一层层拓宽的找寻资料的渠道和角度,都是在本学期学习python过程中很大的收获。讲到这里不得不说的就是王老师在我的python学习过程中给予的极大包容耐心和帮助,因为我打小自带与计算机不和的体质,所以总会遇到很多离奇的问题,甚至在尝试解决的过程中又犯另一个错误,然后再解决,再遇到问题……所以在这个过程中,很多很多次向老师请教,老师都非常耐心的帮助我解决问题,还鼓励我一定要解决问题而不是逃避问题(记得是解决选错gitee本地库的时候老师说的……那个问题折磨我至少三周……),所以我在感觉些许愧疚的同时更多是对老师的感激和敬佩,希望将来还有机会和老师学习交流。最后,我非常清楚的认识到自己的python水平还有非常大的提升空间,所以我会,也必须会,怀着谦虚的态度不断学习,充实自己,也在学习其他各种编程语言过程中,带着本学期老师教给我们的方法,去尝试更多,学习更多,毕竟学海无涯可不仅仅只是说说而已的。

2.意见和建议
或许老师可以在将来的讲课过程中浅谈一下,“如何在网站高效搜索自己对应的错误解决方法”,因为很多错误类型相似但不一样,这也是我试着搜索解决问题时苦恼的地方,即需要花很多时间筛选和浏览。

参考资料

1.https://www.zhihu.com/answer/660177988
2.https://www.bilibili.com/video/BV16f4y1s7sR?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click

posted @ 2022-05-30 17:07  哈哈哈649  阅读(55)  评论(0编辑  收藏  举报