102302147傅乐宜作业1

news/2025/10/25 21:28:06/文章来源:https://www.cnblogs.com/kukuli/p/19165903

1.用requests和BeautifulSoup库方法爬取大学排名信息

内容
核心代码:

点击查看代码
import urllib.request
from bs4 import BeautifulSoupurl = 'http://www.shanghairanking.cn/rankings/bcur/2020'
response = urllib.request.urlopen(url)
html_content = response.read()
soup = BeautifulSoup(html_content, 'html.parser')
table = soup.find('table') #定位排行表
rows = table.find_all('tr')#获取表的每一行print(f"{'排名':<5}{'学校名称':<20}{'省市':<10}{'学校类型':<10}{'总分':<10}")
for row in rows[1:]:#第1个tr为表头,所以从1开始遍历cols = row.find_all('td')#获取列if cols:rank = cols[0].get_text(strip=True)university_name_span = cols[1].find('span', class_='name-cn')university_name = university_name_span.get_text(strip=True) if university_name_span else cols[1].get_text(strip=True)province_city = cols[2].get_text(strip=True)university_type = cols[3].get_text(strip=True)total_score = cols[4].get_text(strip=True)print(f"{rank:<5}{university_name:<20}{province_city:<10}{university_type:<10}{total_score:<10}")
网页的形式如图,table为表,tr为行,td为列

屏幕截图 2025-10-25 200625
结果截图

屏幕截图 2025-10-25 201159

心得体会
使用beautifulsoup可以很方便的找到元素,以及这种爬取方法只适用于静态页面,因此只有第一页的内容,如要翻页需要用selenium来模拟点击翻页

用requests和re库方法爬取商城书包

内容
核心代码:

点击查看代码
import requests
import redef get_dangdang_bag():url = 'https://search.dangdang.com/?key=%CA%E9%B0%FC&act=input'response = requests.get(url)response.encoding = "gbk"#注意编码html_content = response.text# 提取商品项product_items = re.findall(r'<li[^>]*ddt-pit="\d+"[^>]*class="line\d+"[^>]*>.*?</li>', html_content, re.DOTALL)# 解析并显示商品信息print("序号 价格\t商品名称")for index, item in enumerate(product_items, 1):# 提取商品名称name_match = re.search(r'title="([^"]*书包[^"]*)"', item)#确保商品有书包两字name = name_match.group(1) if name_match else "unknow"# 提取商品价格price_match = re.search(r'<span class="price_n">\s*&yen;\s*([\d.]+)\s*</span>', item)price = price_match.group(1) if price_match else "unknow"print(f"{index:>2}  ¥{price:>6} {name}")if __name__ == "__main__":get_dangdang_bag()

屏幕截图 2025-10-25 202645
网页结构如图,li元素对应每个商品,a元素对应名称,span元素对应价格
结果截图如下
屏幕截图 2025-10-25 203059

心得体会
要先选一个容易爬取,页面简洁的网页,用正则表达式匹配好麻烦,不如beautifulsoup

3.爬取一个给定网页( https://news.fzu.edu.cn/yxfd.htm)或者自选网页的所有JPEG、JPG或PNG格式图片文件

内容
核心代码:

点击查看代码
import requests 
from bs4 import BeautifulSoup
import os
import re
from urllib.parse import urljoindef download_images(url, folder):# 检查目标文件夹是否存在,如果不存在则创建if not os.path.exists(folder):os.makedirs(folder)try:response = requests.get(url)response.raise_for_status()  # 检查请求是否成功except requests.exceptions.RequestException as e:print(f"请求网页时出错:{e}")return# 使用BeautifulSoup解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 查找所有图片链接images = soup.find_all('img')# 遍历图片链接并下载图片for img in images:# 获取图片的src属性src = img.get('src')if not src:print("图片链接为空,跳过")continue# 处理相对路径src = urljoin(url, src)# 检查图片链接是否有效try:img_response = requests.head(src, allow_redirects=True)if img_response.status_code != 200:print(f"图片链接无效:{src}")continueexcept requests.exceptions.RequestException as e:print(f"检查图片链接时出错:{e}")continueimg_name = re.sub(r'[\\/*?:"<>|]', '_', src.split('/')[-1]) #替换非法字符# 检查图片是否已下载if os.path.exists(os.path.join(folder, img_name)):print(f"图片已存在,跳过下载:{img_name}")continue# 下载图片try:img_response = requests.get(src, allow_redirects=True)img_response.raise_for_status()  # 检查请求是否成功# 保存图片with open(os.path.join(folder, img_name), 'wb') as f:f.write(img_response.content)print(f"下载图片:{img_name}")except requests.exceptions.RequestException as e:print(f"下载图片时出错:{e}")def crawl_website(base_url, folder, num_pages):# 遍历所有页面for page in range(1, num_pages + 1):# 构造翻页URLif page == 1:page_url = f"{base_url}.htm"else:page_url = f"{base_url}/{7-page}.htm"print(f"正在爬取第 {page} 页:{page_url}")download_images(page_url, folder)print(f"第 {page} 页爬取完成。\n")if __name__ == "__main__":base_url = "https://news.fzu.edu.cn/yxfd"  # 基础网址folder = "downloaded_images"  # 保存图片的文件夹num_pages = 6  # 页数crawl_website(base_url, folder, num_pages)
网页结构如图,在img下给出了图片相对地址,将它与基址拼接便可将图片下载下来,页面格式为https://news.fzu.edu.cn/yxfd/{index}.htm型,便可依次爬取

屏幕截图 2025-10-25 204353

结果截图

屏幕截图 2025-10-25 211814

心得体会
这种网页翻页的同时URL也跟着变,可以全部爬取,同时了解了图片在网页中是怎么存取的

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整教程:ros_control 中 hardware_interface 教程

完整教程:ros_control 中 hardware_interface 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas"…

飞牛NAS的SSL证书过期,又开启了强制HTTPS,进不去界面修改SSL怎么办? - 详解

飞牛NAS的SSL证书过期,又开启了强制HTTPS,进不去界面修改SSL怎么办? - 详解2025-10-25 21:21 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow…

多表查询-练习

-- 多表查询-练习1 -- 1.查询员工的姓名、年龄、职位、部门信息。(隐式内连接) select e.name,e.age,e.job,d.* from emp e ,dept d where e.dept_id = d.id; -- 2.查询年龄小于30岁的员工姓名、年龄、职位、部门信息。…

多智能体大模型在农业中的应用研究与展望

研究意义 首次系统提出“多智能体 大语言模型”在农业中的完整技术框架,为“耕-种-管-收”全流程智能化、无人化提供理论+落地路线。 技术框架• 多智能体系统(MAS)=“角色分工 + 动态协作 + 分布式决策”。 • 大…

嵌入式基础作业--第七周--IIC协议采集温湿度与OLED显示

任务一. 解释什么是“软件I2C”和“硬件I2C” 根据野火教材第23章"IC--读写EEPROM"的内容,详细解释软件I2C和硬件I2C的概念和区别: I2C总线基础 I2C(Inter-Integrated Circuit)是一种两线式串行总线,包…

Nature子刊 | 基于生物学信息的神经网络

机器学习模型在多组学数据中的应用常常需要在预测准确性与生物学可解释性之间进行权衡。一种新兴的深度学习架构通过结构化地编码生物学知识,以提升预测能力和可解释性。然而,更广泛地采用这种架构仍面临着机遇与挑战…

2025年项目总延期?这30款项目进度管理软件一定有一款适合你!

项目总延期是困扰团队效率的常见难题,但选对工具能让交付率提升至85%以上。本文将为您精选30款高效的项目进度管理软件,覆盖从敏捷开发到传统瀑布模型的不同需求。无论是Codes的全流程管控、Jira的敏捷适配性,还是T…

Educational Codeforces Round 66 (Rated for Div. 2) A~F

A - From Hero to Zero 模拟。 能除 \(k\) 直接除 \(k\),否则减掉余数部分。点击查看代码 #include <bits/stdc++.h>using i64 = long long;void solve() {i64 n, k;std::cin >> n >> k;i64 ans = …

小程序原创--基于微信开发者工具实现的猜谜游戏程序 - 教程

小程序原创--基于微信开发者工具实现的猜谜游戏程序 - 教程2025-10-25 21:07 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

stm32使用SPI外设读取W25Q32芯片

void SPI_GPIO_Init(void) {//SPI2-NSS PB12:PIN25 --CS//SPI2-SCK PB13:PIN26//SPI2-MISO PB14:PIN27 W25Q32:DO//SPI2-MOSI PB15:PIN28 W25Q32:DIGPIO_InitTypeDef GPIO_InitStruct; SPI_InitTypeDef …

Avjinder Singh Kaler | 数量遗传学基础

研究对象与核心思想• 数量遗传学研究数量性状(如身高、产量等连续变异性状)的遗传规律。 • 特点:受多基因控制,且环境效应显著。单基因模型基础• 单基因模型是数量遗传理论的起点,假设一个基因位点有两个等位基…

鲁东大学提出可解释的自适应集成机器学习全基因组选择算法用于小麦产量性状关键SNPs筛选

研究背景 全基因组选择(genomic selection, GS)是现代分子育种中的一项重要技术,作为一种强大的机器学习GS方法,堆叠集成学习(stacking ensemble learning, SEL)有效地融合了不同模型(基学习器)的优势,以精确…

台球厅收银台押金原路退回系统押金预授权—东方仙盟 - 详解

台球厅收银台押金原路退回系统押金预授权—东方仙盟 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

数论专题小记

我的数论以前一只因为对数字的恐惧而搁置,准备这几天补回来 /kk。 狄利克雷卷积&莫比乌斯反演我们定义 狄利克雷卷积 这种运算是把两个数轮函数 \(f,g\) 卷成另一个函数 \(t\),其中 \(t\) 满足: \(\ \ \ \ \ \ …

ReactUse 与ahook对比 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

机械臂和相机的9点标定原理

9点标定到底怎么工作的? 这个问题困惑了我很久,虽然想海康VisionMaster 和Halcon 这种软件都提供了很好用的工件,但是最好懂原理,这样才不仅能做项目,还能做好项目。 最近好好研究了一下,感觉是搞清楚了,就记录…

遗传改良中的核心技术:交配设计

分享一则报告,系统总结了植物育种中常用的交配设计(Mating Designs)方法。定义与目的定义:交配设计是指为产生后代而在植物群体间有计划的杂交方案。目的:理解性状或行为的遗传控制机制;为作物品种开发提供基础群…

语言是火,视觉是光:论两种智能信号的宿命与人机交互的未来 - 教程

语言是火,视觉是光:论两种智能信号的宿命与人机交互的未来 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

书籍推荐 | 《数量遗传学》(王建康)

数量遗传学是智能育种必学课程,这里推荐一本由中国农科院作物科学研究所王建康老师主编的教材。本书系统介绍群体遗传与数量遗传的基本理论及其在动植物育种中的应用。全书分群体遗传、数量遗传、育种应用和基因定位四…

Plant Com | 一种新的多源数据(基因组、表型和跨环境)融合的基因组预测框架-GPS

基因组选择(GS)和表型选择(PS)被广泛用于加速植物育种。然而,在处理处理复杂性状时,这两种选择方法的准确性、稳健性和可转移性尚未得到充分探索。近日,南京农业大学丁艳锋团队在Plant Communications发表题为G…