数据采集与融合技术实验课程作业一

news/2024/10/18 22:29:44

数据采集与融合技术实验课程作业一

作业所属课程 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology
作业链接 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13286
gitee码云代码位置 https://gitee.com/wang-qiangsy/crawl_project/tree/master/作业一
学号 102202106

目录
  • 数据采集与融合技术实验课程作业一
    • 作业内容
      • 作业①:
      • 作业②:
      • 作业③:
    • 作业①:爬取大学排名信息
      • 主要代码
      • 代码运行结果
      • 作业心得
    • 作业②:爬取商城中商品名称与价格
      • 主要代码
      • 代码运行结果
      • 作业心得
    • 作业③:爬取网页JPEG和JPG格式文件
      • 主要代码
      • 代码运行结果
      • 作业心得

作业内容

作业①:

要求:用requests和BeautifulSoup库方法定向爬取给定网址(http://www.shanghairanking.cn/rankings/bcur/2020)的数据,屏幕打印爬取的大学排名信息。
输出信息:

排名 学校名称 省市 学校类型 总分
1 清华大学 北京 综合 852.5
2 ......

作业②:

要求:用requests和re库方法设计某个商城(自已选择)商品比价定向爬虫,爬取该商城,以关键词“书包”搜索页面的数据,爬取商品名称和价格。
输出信息:

序号 价格 商品名
1 65.00 xxx
2 ......

作业③:

要求:爬取一个给定网页( https://news.fzu.edu.cn/yxfd.htm)或者自选网页的所有JPEG和JPG格式文件
输出信息:将自选网页内的所有JPEG和JPG文件保存在一个文件夹中

作业①:爬取大学排名信息

主要代码

# 定义获取院校数据的函数
def get_university_data():url = 'https://www.shanghairanking.cn/rankings/bcur/2021'response = requests.get(url)response.encoding = 'utf-8'soup = BeautifulSoup(response.text, 'html.parser')university_data = []# 查找包含院校信息的表格table = soup.find('table')for row in table.find_all('tr')[1:]: cols = row.find_all('td')if len(cols) > 1:rank = cols[0].text.strip()name = ' '.join(cols[1].text.strip().split())  # 删除换行符province = cols[2].text.strip()type_ = cols[3].text.strip()  # 院校类型total_score = cols[4].text.strip()  # 总分university_data.append((rank, name, province, type_, total_score))   return university_data

代码运行结果

作业心得

  1. 数据抓取与解析
    在这次作业中,我使用了 requests 库来发送 HTTP 请求,并使用 BeautifulSoup 库来解析 HTML 内容。这两个库的结合实现数据抓取和解析。通过解析网页中的表格数据,我能够提取出每所大学的排名、名称、所在省份、类型和总分。
  2. 数据展示
    为了更好地展示抓取到的数据,我使用了 PrettyTable 库。这个库可以将数据以表格的形式美观地展示出来。通过设置表格的字段名称和对齐方式,我能够清晰地展示每所大学的详细信息。

作业②:爬取商城中商品名称与价格

主要代码

# 获取网页内容
def get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'}try:response = requests.get(url, headers=headers)response.raise_for_status()  # 确保请求成功return response.textexcept requests.RequestException as e:print(f"Error fetching data from {url}: {e}")return ""# 解析网页内容,提取商品名称和价格
def parse_page(data):uinfo = []plt = re.findall(r'"sku_price":"([\d.]+)"', data)  # 商品价格tlt = re.findall(r'"ad_title_text":"(.*?)"', data)  # 商品名称min_length = min(len(plt), len(tlt))for i in range(min_length):price = plt[i]name = tlt[i].strip()uinfo.append((name, price))  # 添加名称和价格到uinfo列表return uinfo

代码运行结果

作业心得

  1. 数据抓取与解析
    在这次作业中,我使用了 requests 库来发送 HTTP 请求,并使用 BeautifulSoup 库来解析 HTML 内容。这两个库的结合实现数据抓取和解析。通过解析网页中的 JSON 数据,我能够提取出每个商品的名称和价格。
  2. 正则表达式的应用
    在数据解析过程中,我使用了 re 库中的正则表达式来提取商品的价格和名称。在这次作业中,我通过正则表达式提取了所需的数据。

作业③:爬取网页JPEG和JPG格式文件

主要代码

# 获取网页内容
def get_html(url):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'}try:response = requests.get(url, headers=headers)response.raise_for_status()  # 确保请求成功return response.textexcept requests.RequestException as e:print(f"Error fetching data from {url}: {e}")return ""# 解析网页内容,提取图片链接
def parse_page(html, base_url):soup = BeautifulSoup(html, 'html.parser')img_urls = []for img in soup.find_all('img'):src = img.get('src')if src and (src.lower().endswith('.jpg') or src.lower().endswith('.jpeg')):full_url = urljoin(base_url, src)img_urls.append(full_url)return img_urls

代码运行结果


作业心得

  1. 数据抓取与解析
    在这次作业中,我使用了 requests 库来发送 HTTP 请求,并使用 BeautifulSoup 库来解析 HTML 内容。通过解析网页中的数据,我能够提取出所需的图片的URL信息。
  2. URL 处理
    在这次作业中,我使用了 urljoin 函数来处理相对 URL 和绝对 URL 的拼接。这个函数可以确保生成的 URL 是正确的,避免了手动拼接 URL 可能带来的错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

C3P0 链子分析学习

C3P0 链子分析学习 概述 C3P0是一个开源的数据库连接池,它实现了数据源与JNDI绑定,支持JDBC3规范和实现了JDBC2的标准扩展说明的Connection和Statement池的DataSources对象。即将用于连接数据库的连接整合在一起形成一个随取随用的数据库连接池,使用它的开源项目有Hibernate…

鞅与停时定理

好用、神秘、很牛的东西!鞅与停时定理会随着呆猫做题更新一些,但是非题解部分的改动应该不大呆猫不会数学,要证明也是直接抄别人的,不如直接放一篇( 详细证明及介绍 主要写点,对鞅与停时定理的理解 定理与势能函数 对于一个随机过程\(\{X_0,X_1,...,X_t\}\),其中\(X_t\)…

20241018每日一题洛谷P2386

普及 每日一题 信息学竞赛 1206:放苹果 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。 第一行是测试数据的数目t(0<=t<=20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N…

图片与向量的关系

如何从向量角度描述表示图片黑白图片黑白图片(灰度图)通过 2 维向量(矩阵)来表达。2个维度的长度分别代表了图片的高度和宽度(以像素为单位),向量元素记录着每一个像素的灰度(数值越大,颜色越浅) 例如下面右图矩阵标注了左图像素点的灰度分布:彩色图片彩色图片通过 …

数据采集与融合技术第二次作业

学号姓名 102202132 郑冰智这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13285这个作业的目标 爬取天气网、股票相关信息、中国大学2021主榜所有院校信息,并存储在数据库中实验二仓库地址 https://gitee.com/zheng…

【LGR-203-Div.4】洛谷入门赛 #28

【LGR-203-Div.4】洛谷入门赛 #28\(A\) luogu B4042 [语言月赛 202410] 顺序结构 \(AC\)顺序结构。点击查看代码 int main() { ll a;cin>>a;cout<<3*(5+a)<<" "<<3*a+5<<endl;return 0; }\(B\) luogu B4043 [语言月赛 202410] 刻度尺…

uni-app小程序(快手、抖音)getCurrentPages使用坑位记录2

前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现公司项目就是主推uni-app,我主要负责抖音和快手端小程序。 坑位 公司历史原因项目有APP端小程序端,但并不使用uni-app的一端发布所有平台,…

二叉查找树和笛卡尔树

二叉查找树~和笛卡尔树目录二叉查找树定义作用操作查找插入删除缺点笛卡尔树定义操作构造 二叉查找树 定义 ​ 二叉查找树(Binary Search Tree,BST),又名二叉搜索树或二叉排序树。 ​ 它是一类特殊规定的二叉树,它应当满足以下条件:每个节点有唯一确定的权值 非叶子节点的…