20211102 尹子扬《Python程序设计》 实验四 Python综合实践实验报告
2022/6/2 1:22:08
本文主要是介绍20211102 尹子扬《Python程序设计》 实验四 Python综合实践实验报告,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
20211102 尹子扬 《Python程序设计》 实验4报告
课程:《Python程序设计》
班级: 2111
姓名: 尹子扬
学号:20211102
实验教师:王志强
实验日期:2022年5月31日
必修/选修: 公选课
(一)实验要求
Python综合应用:爬虫、数据处理、可视化、机器学习、神经网络、游戏、网络安全等。
课代表和各小组负责人收集作业(源代码、视频、综合实践报告)
注:在华为ECS服务器(OpenOuler系统)和物理机(Windows/Linux系统)上使用VIM、PDB、IDLE、Pycharm等工具编程实现。
批阅:注意本次实验不算做实验总分,前三个实验每个实验10分,累计30分。本次实践算入综合实践,打分为25分。
评分标准:
(1)程序能运行,功能丰富。(需求提交源代码,并建议录制程序运行的视频)10分
(2)综合实践报告,要体现实验分析、设计、实现过程、结果等信息,格式规范,逻辑清晰,结构合理。10分。
(3)在实践报告中,需要对全课进行总结,并写课程感想体会、意见和建议等。5分
(4)如果没有使用华为云服务(ECS或者MindSpore均可),本次实践扣10分。
注意:每个人的实验不能重复,课代表先统计大家做的内容并汇总,有重复的需要自行协商。
(二)实验过程及结果
1.导入库
2.制定一些空的list
3.向地址发送请求并用美味的汤解析返回的内容
4.针对每一个属性进行解析
5.在存储数据时对存储有影响的情况进行排查
6.把数据储存到csv里面
7.主函数
8.运行结果
(三)在华为云上运行代码
1.打开ESC服务器
2.连入putty
3.打开WinSCP并创建test
4.下载python3以及pip and更新
具体操作按照搭建微信公众号后台——收发文本消息_弹性云服务器 ECS_最佳实践_华为云 (huaweicloud.com)上的指示完成
5.运行成功结果
(四)在实验中遇到的问题
问题一:对于库的导入不清楚
解决:在文件中的setting里找到资源包上的搜索栏进行寻找
问题二:在putty运行时对python安装包,pip库导入不知道怎么弄
解决:在查找了n天资料后找到上述网址,按照流程就可以很简单的进行更新,不过库下载巨慢
问题三:python在putty上无法运行
解决:把py文件拖入在putty上下载的python文件夹就可以了(在SCP上操作)
(五)节课感悟
在本学期的python公选课中,我接触到了一个从来没有接触的领域(从入门到入土),上学期选到python的时候心情也是非常激动的,在这短短的十几节大课里,我感受到了python的魅力(尤其是这学期还有无情的c语言),王老师上课也是讲的非常有意思,尤其时对于markdown测评作业发奖品的时候显得整个人散发着光芒(yue)在课上,王老师对于每一个部分都讲的非常细致,不过下次可不可以讲的慢一点,每次都要跟着旁边的同学抄代码,菜鸟真的跟不上啊TAT,我对于python的爬虫感受是最深的,大家都是知道一句话“学python就要学爬虫”,其实我感觉生活中爬虫用的好绝对能给我带更多的1收获,虽然我现在只会爬一些比较简单的网站,但是以后我还是会加深python功夫,在python的道路上走到头秃.......阿不,走得越来越远qwq。
(以下是本次实验的python代码) import requests #发送请求 from bs4 import BeautifulSoup #解析网页 import pandas as pd #存取csv from time import sleep #等待时间(防止反爬) book_name = [] # 书名 book_url = [] # 书籍链接 book_star = [] # 书籍评分 book_star_people = [] # 评分人数 book_author = [] # 书籍作者 book_translater = [] # 书籍译者 book_publisher = [] # 出版社 book_pub_year = [] # 出版日期 book_price = [] # 书籍价格 book_comment = [] # 一句话评价
def get_book_info(url, headers): res = requests.get(url, headers=headers) soup = BeautifulSoup(res.text, 'html.parser') for book in soup.select('.item'): name = book.select('.pl2 a')[0]['title'] # 书名 book_name.append(name) bkurl = book.select('.pl2 a')[0]['href'] # 书籍链接 book_url.append(bkurl) star = book.select('.rating_nums')[0].text # 书籍评分 book_star.append(star) star_people = book.select('.pl')[1].text # 评分人数 star_people = star_people.strip().replace(' ', '').replace('人评价', '').replace('(\n', '').replace('\n)', '') # 数据清洗 book_star_people.append(star_people) # 没有一句话评价,比如倒数第二名,君主论 if book.select('.quote span'): book_comment.append(book.select('.quote span')[0].text) else: book_comment.append(None) info = book.select('.pl')[0].text.split('/') if len(info) == 5: # 正常情况 book_author.append(info[0]) book_translater.append(info[1]) book_publisher.append(info[2]) book_pub_year.append(info[3]) book_price.append(str(info[4])) elif len(info) == 4: # 没有译者,比如:第一名,红楼梦 book_author.append(info[0]) book_translater.append(None) book_publisher.append(info[1]) book_pub_year.append(info[2]) book_price.append(str(info[3])) elif len(info) == 6: # 有2个价格,比如:第一页,福尔摩斯探案全集(上中下) book_author.append(info[0]) book_translater.append(info[1]) book_publisher.append(info[2]) book_pub_year.append(info[3]) book_price.append(str(info[4]) + '/' + str(info[5])) elif len(info) == 3: # 没有作者,且没有译者,比如:第5页,十万个为什么 book_author.append(None) book_translater.append(None) book_publisher.append(info[0]) book_pub_year.append(info[1]) book_price.append(str(info[2])) else: pass def save_to_csv(csv_name): df = pd.DataFrame() # 初始化一个DataFrame对象 df['书名'] = book_name df['豆瓣链接'] = book_url df['作者'] = book_author df['译者'] = book_translater df['出版社'] = book_publisher df['出版日期'] = book_pub_year df['价格'] = book_price df['评分'] = book_star df['评分人数'] = book_star_people df['一句话评价'] = book_comment df.to_csv(csv_name, encoding='utf_8_sig') # 将数据保存到csv文件 if __name__ == "__main__": # 定义一个请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'} # 开始爬取豆瓣数据 for i in range(4): # 爬取共10页,每页25条数据 page_url = 'https://book.douban.com/top250?start={}'.format(str(i * 25)) print('开始爬取第{}页,地址是:{}'.format(str(i + 1), page_url)) get_book_info(page_url, headers) sleep(1) # 等待1秒 # 保存到csv文件 save_to_csv(csv_name="BookDouban250.csv")
这篇关于20211102 尹子扬《Python程序设计》 实验四 Python综合实践实验报告的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门