当前位置: 首页 > news >正文

102302105汪晓红作业1

作业1

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

代码与结果

核心代码:

点击查看代码
 #设置headers,模拟浏览器访问,防止被反爬headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}#设置真实网址,爬取指定页面url = "https://www.shanghairanking.cn/rankings/bcur/2020"try:response = requests.get(url, headers=headers)response.raise_for_status()#将编码设置为utf-8防止乱码response.encoding = 'utf-8' #用bs4解析网页的HTML文件soup = BeautifulSoup(response.text, 'html.parser')#检查可知,大学排名数据保存在rk-table表格中,搜索该表格table = soup.find('table', class_='rk-table')print("2020年中国大学排名")#设置打印表格的结构print("=" * 50)print(f"{'排名':<4} {'学校名称':<15} {'省份':<6} {'类型':<4} {'总分':<6}")print("-" * 50)#处理表格数据rows = table.find('tbody').find_all('tr')for row in rows:cells = row.find_all('td')# 提取前5列数据ranking = cells[0].get_text(strip=True)# 提取学校名称name_cn = cells[1].find('span', class_='name-cn')university_name = name_cn.get_text(strip=True) if name_cn else cells[1].get_text(strip=True)# 提取省市、类型和总分数据province = cells[2].get_text(strip=True)uni_type = cells[3].get_text(strip=True)total_score = cells[4].get_text(strip=True)print(f"{ranking:>2}   {university_name:<15} {province:<6} {uni_type:<4} {total_score:>6}")

输出结果:
image

作业心得:

打开该网站后,检查页面,筛选html文件,可以找到排名数据保存在rk-table表格中,解析该表格后打印出来即可

image

作业②:用requests和re库方法设计当当网“书包”商品比价

代码与结果

核心代码:

点击查看代码
try:#爬取当当网的书包商品信息url = "https://search.dangdang.com"# 获取页面,书包的第一页params = {'key': '书包', 'page': 1, 'pagesize': 10}response = requests.get(url, params=params, headers=headers, timeout=10)response.encoding = 'gb2312' #utf-8不可用,用gb2312html = response.text# 使用正则表达式提取商品信息all_pattern = re.compile(r'<span class="price_n">&yen;(\d+(?:\.\d+)?)</span>.+?<a title="(.+?)"', re.S)result = list(all_pattern.finditer(html))# 显示结果print("\n序号| 价格 | 商品名")print("-" * 80)products = []for i, r in enumerate(result, 1):price, title = r.groups()title = title.strip()print(f" {i} | {price} | \"{title}\"")products.append([title, price])

输出结果:

image

作业心得:

爬取当当网的商品信息,跳转到书包商品页面,检查,找到html文件中的价格和商品名称段,解析,使用正则表达式筛选,然后将商品名称和价格对应保存下来

image

作业③:爬取一个给定网页 https://news.fzu.edu.cn/yxfd.htm 的所有JPEG、JPG或PNG格式图片文件

代码与结果:

核心代码:

点击查看代码
# 步骤1: 设置请求头headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}# 创建保存文件夹if not os.path.exists(folder):os.makedirs(folder)try:# 步骤2: 使用BeautifulSoup获取HTMLresponse = requests.get(url, headers=headers)response.raise_for_status()soup = BeautifulSoup(response.text, 'html.parser')html_content = str(soup)# 步骤3: 使用正则表达式查找图片img_urls = re.findall(r'<img[^>]+src="([^"]+\.(?:jpg|jpeg|png))"', html_content, re.I)print(f"找到 {len(img_urls)} 个图片链接")# 步骤4: 下载并保存count = 0for img_src in img_urls:# 拼接完整URLimg_url = urljoin(url, img_src)try:# 下载图片img_response = requests.get(img_url, headers=headers)img_response.raise_for_status()# 生成文件名filename = os.path.basename(img_src)if not filename:filename = f"image_{count+1}.jpg"filepath = os.path.join(folder, filename)# 保存图片with open(filepath, 'wb') as f:f.write(img_response.content)print(f"下载: {filename}")count += 1except Exception as e:print(f"下载失败: {img_url}")print(f"\n共下载 {count} 张图片到 '{folder}' 文件夹")except Exception as e:print(f"错误: {e}")

输出结果:
image

作业心得:

打开该网站后,检查页面,筛选html文件,可以找到第一个图片路径保存在img src中:
image
通过这个格式可以直接将图片筛选出来,同时用正则表达式筛选我们需要的图片格式

http://www.jsqmd.com/news/23799/

相关文章:

  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • 普通幂转下降幂
  • 解决Java项目在复杂网络环境下访问外网不通的问题
  • 私有2.4G无线对讲机方案:BLE芯片+PA芯片
  • PyCharm 2024超详细下载安装教程(附安装包+激活教程)超详细图文步骤
  • 发布会回顾|袋鼠云发布多模态数据中台,重构AI时代的数据底座
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 布谷直播系统源码:高并发直播架构设计到搭建部署配置
  • 医疗器械行业数字化破局:一体化平台正在淘汰多系统集成模式
  • 报表知识
  • 【IEEE出版 | 往届均已完成见刊检索 | 见刊检索稳定】第七届信息与计算机前沿术国际学术会议(ICFTIC 2025)
  • 动态点分树
  • 2025年隔热条厂家权威推荐榜:尼龙隔热条/PA66尼龙隔热条/建筑用隔热条/断桥铝门窗隔热条/幕墙隔热条/阳光房隔热条/国标隔热条精选
  • 【前端效率工具】:告别右键另存,不到 50 行代码一键批量下载网页图片
  • 特殊符号的输入
  • Luogu P3237 [HNOI2014] 米特运输 题解 [ 蓝 ] [ 树形 DP ] [ 哈希 ]
  • 「Gym 104901F」Say Hello to the Future
  • 渐进过程中大O与小o混用
  • Navicat 17 超详细保姆级下载安装教程:附激活工具使用步骤​
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • 各个版本的sqlite-jdbc jar下载链接
  • [电脑]win10下SVN图标不显示
  • 2025/10/27~2025/11/2 做题笔记 - sb
  • echart - f
  • 完整教程:LinuxC++——etcd分布式键值存储系统入门
  • 基于MATLAB的光学CCD全息成像仿真程序实现
  • el-date-picker样式修改
  • 我从哪里起飞 从哪里降落 多少不能原谅的错 却不能重来过
  • unity管理器设计:Manager of Managers