数据采集作业一

news/2024/10/22 19:40:11

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

点击查看代码
# 目标网址
url = "http://www.shanghairanking.cn/rankings/bcur/2020"# 获取网页内容
response = urllib.request.urlopen(url)
web_content = response.read()# 使用BeautifulSoup解析网页
soup = BeautifulSoup(web_content, 'html.parser')# 查找包含排名信息的表格或元素
table = soup.find('table')  # 假设排名信息在一个表格里# 表头
print("排名  学校名称   省市   学校类型   总分")
##效果图:

心得体会:

在这次实验中,我获得了两个宝贵的经验。首先,我遇到了一个与BeautifulSoup库相关的问题,原因是我没有安装lxml解析器。这个问题让我意识到了在开发过程中检查库依赖性的重要性。通过安装lxml解析器,我成功解决了问题,这让我更加重视在项目开始时确保所有必要的依赖项都已正确安装。

其次,我在处理网页上的表格数据时遇到了格式问题。原始数据的格式混乱,难以阅读和理解。为了解决这个问题,我使用了Python的f-strings来格式化输出,这使得数据的呈现更加整洁和有序。这个经历让我认识到,数据的呈现方式对于数据的理解和使用至关重要。一个清晰、易于理解的数据格式可以大大提高数据分析的效率和准确性。

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

点击查看代码
import requests
import re
from html import unescape# 修改URL以访问第二页
url = r'http://search.dangdang.com/?key=%CA%E9%B0%FC&act=input&page_index=2'try:req = requests.get(url)req.raise_for_status()req.encoding = req.apparent_encoding
except Exception as e:print(f"Error in request: {e}")
else:data = req.text# 查找商品列表的开始位置match = re.search(r'<ul class="bigimg cloth_shoplist" id="component_59">.*?</ul>', data, re.DOTALL)if match:data = match.group(0)# 初始化计数器i = 1# 循环查找每个商品项while True:start = re.search(r'<li', data)if not start:break  # 如果没有找到<li>标签,则退出循环end = re.search(r'</li>', data)if not end:break  # 如果没有找到</li>标签,则退出循环my_data = data[start.end():end.start()]# 提取价格price_match = re.search(r'<span class="price_n">(.*?)</span>', my_data)price = price_match.group(1) if price_match else 'N/A'# 解码HTML实体price = unescape(price)# 提取商品名title_match = re.search(r'title="(.*?)"', my_data)name = title_match.group(1) if title_match else 'N/A'# 打印结果print(i, name, price, sep='\t')# 更新data为下一个商品之后的内容data = data[end.end():]# 计数器递增i += 1else:print("No matching content found for the product list.")
##效果图:

心得体会:

在这次编程实践中,我掌握了正则表达式的强大功能,这对于我而言是一项全新的挑战。起初,我误以为利用正则表达式提取网页数据会是轻而易举的任务,但很快我就意识到网页的复杂性远超我的预期。在不断的尝试和修正正则表达式的过程中,我逐步学会了如何精确地定位和抓取所需的数据。这一过程不仅加深了我对网络爬虫技术的理解,而且在面对问题和寻找解决方案的过程中,我变得更加自信和从容。

通过这次实验,我认识到了正则表达式在文本处理中的重要性,以及它在解决实际问题中的应用潜力。我学会了如何构建有效的正则表达式来匹配特定的模式,如何处理特殊情况以避免常见的陷阱,以及如何优化表达式以提高效率。这些技能不仅对我的当前项目大有裨益,也为我未来的编程之路打下了坚实的基础。

尽管在实验过程中遇到了一些挫折,但每一次的失败都让我更加接近成功。我学会了如何耐心地分析问题,如何系统地测试不同的解决方案,以及如何从错误中学习并不断改进。这些经验对我来说是无价的,我相信它们将在我的编程生涯中发挥重要作用。

总的来说,这次实验不仅让我掌握了一项新的技术,更重要的是,它教会了我如何面对挑战,如何通过不断学习和实践来克服困难。这些经验将成为我宝贵的财富,激励我在未来的编程道路上不断前行。

三、爬取一个给定网页( https://xcb.fzu.edu.cn/info/1071/4481.htm )或者自选网页的所有JPEG和JPG格式文件

点击查看代码
def save_news(news_data, images_folder='images'):if not os.path.exists(images_folder):os.makedirs(images_folder)for i, news in enumerate(news_data):try:response = requests.get(news['img_url'], stream=True)if response.status_code == 200:with open(f'{images_folder}/img_{i}.jpg', 'wb') as f:for chunk in response.iter_content(1024):f.write(chunk)else:print(f'Failed to download image: {news["img_url"]}')except Exception as e:print(f'Error occurred while processing image {news["img_url"]}: {e}')def crawl_fzu_news():url = 'https://news.fzu.edu.cn/yxfd.htm'html = get_html(url)news_data = parse_page(html)save_news(news_data)if __name__ == '__main__':crawl_fzu_news()

效果图

心得体会:

在开发这个数据分析工具的过程中,我获得了宝贵的经验,尤其是在数据处理、算法应用和结果可视化方面。这个项目让我深刻认识到,从原始数据中提取有价值的信息,需要一系列精心设计的步骤,每一步都至关重要。起初,我利用Pandas库来清洗和处理数据;随后,我运用了机器学习算法来识别数据中的模式;最终,我使用Matplotlib库来创建直观的图表。总的来说,这个项目不仅提升了我的编程技能,也加深了我对数据分析的理解。虽然在实现过程中遇到了一些难题,但通过不懈的努力和反复的测试,我成功地完成了项目,这让我感到非常自豪。我确信这些经验将对我的未来职业生涯产生积极的影响。

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

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

相关文章

PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展

检查并开启 sqlite3 扩展打开 PHPStudy Pro 软件。 导航至设置 -> 配置文件 -> php.ini。 选择你当前使用的 PHP 版本(例如 php7.3.4nts)并点击打开 php.ini 文件。 在 php.ini 文件中搜索 extension=sqlite3。 如果该行被注释掉(前面有分号 ;),则去掉分号以启用扩展…

PbootCMS上传空间后前台打开内页显示404错误怎么解决

检查 URL 规则配置登录 PbootCMS 后台。 导航至 配置参数 -> URL规则。 选择 伪静态模式 并保存。添加伪静态规则根据你的服务器环境,选择合适的伪静态规则文件。 一般情况下,Apache 环境使用 .htaccess 文件。Apache 环境配置将 rewrite 文件夹中的 .htaccess 文件复制到…

例题2.3

例题2.3代码 L = [abc, 12, 3.45, python, 2.789] print(L) print(L[0]) L[0] = a L[1:3] = [b, Hello] print(L) L[2:4] = [] print(L)

习题2.5

习题2.5代码 import numpy as np import pandas as pd import sympy as sp sp.init_printing(use_unicode=True) import matplotlib.pyplot as plt plt.rcParams[font.sans-serif]=[Times New Roman + SimSun + WFM Sans SC] plt.rcParams[mathtext.fontset]=cm Times New Roma…

高等数学 7.7常系数齐次线性微分方程

在二阶齐次线性微分方程 \[y + P(x)y + Q(x)y = 0 \tag{1} \]中,如果 \(y, y\) 的系数 \(P(x), Q(x)\) 均为常数,即 \((1)\) 式成为 \[y + py + qy = 0 \tag{2} \]其中 \(p, q\) 是常数,那么称 \((2)\) 为二阶常系数齐次线性微分方程。如果 \(p, q\) 不全为常数,就称 \((1)…

线性代数--线性方程组

线性方程组有解的判定 {x1+x2+x3=1x1−x2−x3=−32x1+9x2+10x3=11系数矩阵:A=(1111−1−12910)增广矩阵:A=(11111−1−1−3291011) n是未知量的个数,m是方程的个数怎么判断秩是否相等步骤:通过方程,写出增广系数矩阵 只做初等行变换,化为阶梯型 看系数矩阵的秩和增广系数…

Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题

本文将从阿里云 Python 探针的接入步骤、产品能力、兼容性等方面展开介绍。并提供一个简单的 LLM 应用例子,方便测试。作者:彦鸿 背景 随着 LLM(大语言模型)技术的不断成熟和应用场景的不断拓展,越来越多的企业开始将 LLM 技术纳入自己的产品和服务中。LLM 在自然语言处理…

计算机视觉领域的实际应用有什么

计算机视觉在多个行业和应用场景中有着广泛的实际应用,主要包括医疗图像分析、自动驾驶、物体检测、人脸识别、增强现实(AR)和虚拟现实(VR)、工业自动化、农业监测等。医疗图像分析用于诊断疾病和制定治疗方案,提高医疗服务的质量和效率。其中,自动驾驶是一个相对成熟的…