ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20211102 尹子扬《Python程序设计》 实验四 Python综合实践实验报告

2022-06-01 15:35:02  阅读:258  来源: 互联网

标签:info star 20211102 Python python df book 尹子扬 append


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")

 

标签:info,star,20211102,Python,python,df,book,尹子扬,append
来源: https://www.cnblogs.com/yzy3655921/p/16332518.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有