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

数据采集与融合技术实践第一次作业

作业1

## 代码以及相关图片

点击查看代码
import requests
from bs4 import BeautifulSoup#原本想把第一个页面设为base_url,之后以此为根据跳转其他页面的(获取排名31之后的学校信息),可惜未能做到
base_url = 'http://www.shanghairanking.cn/rankings/bcur/2020'
response = requests.get(base_url)#用get方法发出请求
response.encoding = 'utf-8'#此处是为了避免乱码现象# 把页面信息变成bs4对象
page = BeautifulSoup(response.text, 'html.parser')
#爬取学校排名所在的表格,并存储在table中
table = page.find('table', class_='rk-table')
tbody = table.find('tbody')
#取出表格中每一行的信息,存储在trs中
trs = tbody.find_all('tr')result = []
result_num = 0
#遍历表格的每一行
for tr in trs:result.append([])j = 1i = 1#遍历一行中每一个单元格for td in tr.find_all('td'):if j > 5:breakif j == 1:ranking = 'ranking top' + str(i)i += 1#把排名号码存储在结果列表里result[result_num].append(tr.find('div', class_='ranking').text.strip())elif j == 2:#把学校名称存储在结果列表里result[result_num].append(tr.find('span', class_='name-cn').text.strip())elif j == 3:# 把学校所在地存储在结果列表里result[result_num].append(td.text.strip())elif j == 4:# 把学校类型存储在结果列表里result[result_num].append(td.text.strip())elif j == 5:#把学校总分存储在结果列表里result[result_num].append(td.text.strip())j += 1result_num += 1#通过列表的方式输出结果
for num in result:print(num)
代码运行截图:

image

## 作业心得体会
通过这次作业我了解到了很多前端的知识,明白了网上那么多好看的网页是怎么制作出来的,以及我还学到了爬取网页信息最基本的知识,明白了bs4模块的工作原理。

作业2

## 代码以及相关图片

点击查看代码
import requests
import re
#这里是当当网的url
url = "https://search.dangdang.com/?key=%CA%E9%B0%FC&act=input"headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0'
}
resp = requests.get(url,headers=headers)#为正则表达式创建一个容器
pattern = re.compile(r'<li ddt-pit.*?<a title="(?P<name>.*?)".*?<span class="price_n">(?P<price>.*?)</span>',re.S)
#html是网页源代码
html = resp.text
#创建一个迭代器
result = re.finditer(pattern,html)
#创建一个名为goods的列表,用于存放商品的名称和对应的价格
goods = []
i = 0
#遍历迭代器,并把爬取到的商品信息放进goods列表里
for match in result:goods.append([match.group('name')])goods[i].append(match.group('price')[5:])i += 1
#一行行地输出商品信息
for good in goods:print(good)

代码输出结果:
image

## 作业心得体会
通过这一次的作业,我学到了re模块和正则表达式的用法,并且可以独立用正则表达式爬取网页信息,但是通过这次作业我发现很多网站的反爬机制真的很强大,很难爬取到,因此我们要学习的爬虫相关知识还是有很多。

作业3

## 代码以及相关图片

点击查看代码
import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin# 导入福州大学新闻网相关网页的url
url = "https://news.fzu.edu.cn/yxfd.htm"
# 设置图片保存目录
save_dir = "homework1.3.images"# 判断图片保存目录是否存在,若不存在就要自己创建
if not os.path.exists(save_dir):os.makedirs(save_dir)resp = requests.get(url) # 网页未设置反爬手段,因此不需要headers
resp.encoding = 'utf-8' # 此处的编码格式若不设置会出现乱码
html = resp.text # html中保存网页代码
# print(html) # 这里把try的步骤改成了直接测试
page = BeautifulSoup(html, 'html.parser')   #把网页内容转换成bs4对象imgs = page.find_all('img') # 获取页面中所有的图片,并存在imgs中count = 0
# 一个个遍历爬取到的图片
for img in imgs:img_src = img.get('src') #获取图片连接if not img_src: # 若遇到没有连接的图片直接跳过continue# 把相对路径转换为绝对路径full_img_src = urljoin(url, img_src)# 检查图片格式是否为JPEG、JPG或PNG,如果不是直接跳过if not (full_img_src.lower().endswith(('.jpg', '.jpeg', '.png'))):continue# 开始下载图片img_response = requests.get(full_img_src, timeout=10)# 获取图片扩展名if full_img_src.lower().endswith('.png'):ext = '.png'else:  # jpg或jpegext = '.jpg'# 保存图片img_name = f"image_{count}{ext}"img_path = os.path.join(save_dir, img_name)count += 1 # 计算总共保存了多少张图片with open(img_path, 'wb') as f:f.write(img_response.content)print(f"已保存: {img_name} ({full_img_src})")print(f'总共保存了{count}张图片')

运行结果:
image

## 作业心得体会
通过这一次的作业我学会了从网上爬取图片的方法以及原理。

http://www.hskmm.com/?act=detail&tid=39618

相关文章:

  • ECC 学习笔记
  • 转化漏斗(随笔)
  • Halcon算法——区域生长
  • Windows11文件夹右键-删除多余选项-加快打开速度
  • 20231326《密码系统设计》第五周预习报告
  • 2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺/高端定制/全屋整装,烘干/白胚/木蜡油保养工艺深度解析
  • 2025年摘星搜荐怎么样:全面评测摘星AI的功能与优势
  • 实验 2
  • 2025 年 10 月系统门窗十大品牌榜单揭晓,技术研发实力与市场口碑深度解读
  • 【安卓】
  • 2025年TPU厂家权威推荐榜单:TPU加纤,TPU改性生产,专业定制与技术创新实力解析
  • 2025 年 10 月系统门窗十大品牌榜单揭晓,技术核心实力与市场口碑深度解读
  • 【万元奖金】第二届CCF算法能力大赛开始啦!名校云集、名企汇聚,免费参赛!
  • 切空间、切丛与收缩算子
  • 2025年仿石漆厂家推荐排行榜,外墙仿石漆,内墙仿石漆,防霉仿石漆,水包水仿石漆,水包砂仿石漆,耐污仿石漆,自洁仿石漆公司推荐
  • 2025年中央空调主机保养/维修/清洗/维保/维护公司推荐排行榜,水处理维保,物业公司/医院/写字楼/商场中央空调主机维保厂家精选
  • 变盲从为探索:专注听课,深耕实干
  • 2025年新风系统厂家权威推荐榜:电竞酒店/商场别墅/极寒地区全热交换新风系统专业解决方案
  • 2025 年 10 月系统门窗十大品牌榜单揭晓,技术研发实力与市场口碑全景剖析
  • 乱学点东西#1 :二进制警报器
  • 变盲从为探索:专注听课,深耕实操
  • 认真听讲,重新看见课堂价值
  • VMware 25H2安装完Kubuntu 25.10后的设置
  • Chapter-1 Memory Management (section 1.1-1.5)
  • 完整教程:在线教程丨百倍提速,中科院团队发布首个国产类脑脉冲大模型SpikingBrain-1.0,推理效率数量级提升
  • 10/26/2025 一周总结
  • 2025年饮料包装设备厂家权威推荐榜:缠膜机/吹瓶机/膜包机/杀菌机/水处理/套标机/贴标机/洗瓶机/卸垛机/旋盖机/液氮机/装箱机/灌装生产线专业解析
  • 【API接口】最新可用抖音搜索接口
  • 妙题合集
  • 个人 Windows 电脑本地部署运行 DeepSeek 大模型