102302106-陈昭颖-第2次作业

news/2025/11/8 20:13:46/文章来源:https://www.cnblogs.com/C-Zhaoying/p/19202729

•作业①:

1.爬取中国气象网的七日天气预报

要求:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在数据库。
image
核心代码

def city_weather(city):url = "http://www.weather.com.cn/weather/" + cityCode[city] + ".shtml"params = {'key': city, 'page': 1, 'pagesize': 10}response = requests.get(url, params=params)soup = BeautifulSoup(response.content, "html.parser")inform = soup.find("ul", {"class": "t clearfix"})weather_data = []for li in inform.find_all("li"):city = citydate = li.find('h1').textweather = li.find(class_="wea").texttemperature = li.find(class_="tem").text.strip()weather_data.append([city ,date, weather, temperature])return weather_data

我利用不同城市的citycode分成四个城市获取天气预报的信息,
实验结果
image
image
输出信息
https://gitee.com/C-Zhaoying/2025_crawl_project/blob/master/hw2p/1/weather.db

2.实验心得

这次实验我一开始是用“北京”作为特定例子爬取天气预报,后面再添加了三个其他城市,在存入数据库的时候我想把每个城市的信息都存入city_data这个空列表里面,但是用成了append,发现前面一个城市的信息全部都被覆盖掉了,只剩下最后一个城市,后面改成了extend就没问题了。

•作业②:

1.爬取股票的相关信息

要求:用requests和BeautifulSoup库方法定向爬取股票相关信息,并存储在数据库中。
image
技巧:在谷歌浏览器中进入F12调试模式进行抓包,查找股票列表加载使用的url,并分析api返回的值,并根据所要求的参数可适当更改api的请求参数。根据URL可观察请求的参数f1、f2可获取不同的数值,根据情况可删减请求的参数。
核心代码
我选取东方财富网:https://www.eastmoney.com/ 的行情中心作为爬取目标,点击F12观察js文件
image

#获取股票的数据
def get_stock_data(url):response = requests.get(url)soup = BeautifulSoup(response.content, "html.parser")html = response.textjson_str = re.search(r'\(({.*})\)', html).group(1)data = json.loads(json_str)return data#对数据预处理
def data_process(data):   stock_data = []if 'data' in data and 'diff' in data['data']:for item in data['data']['diff']:stock_num = item['f12']         #代码stock_name = item['f14']        #名称stock_price = item['f2']/100    #最新价stock_change = str(item['f3']/100 )+"%"  #涨跌幅demo0 = item['f4']/100            #涨跌额demo1 = str(item['f5'] /10000)+"万"           #成交量demo2 = str(item['f6']/100000000 )+"亿"       #成交额demo3 = str(item['f7']/100)+"%"            #振幅demo4 = item['f15']/100             #最高demo5 = item['f16']/100             #最低demo6 = item['f17']/100             #今开demo7 = item['f18']/100             #昨收stock_data.append((stock_num,stock_name, stock_price, stock_change,demo0,demo1,demo2,demo3,demo4,demo5,demo6,demo7))return stock_data

根据网页的不同f(例如f12代表股票代码,f14代表股票名称)对其进行一些处理,包括后面的一些数字,给它统一成以“万”或“亿”表示的数字,更加清晰
运行结果
image
输出信息
https://gitee.com/C-Zhaoying/2025_crawl_project/blob/master/hw2p/2/stock.db

2.心得体会

这次实验我学会了用网页里面的js来调取相关信息,爬虫的另一种新途径,并且面对众多的信息内容要去更有耐心的拆解分析,并且进行一些处理简化,使得数据更加容易看懂清晰

•作业③:

1.爬取中国大学2021主榜的院校信息

要求:爬取中国大学2021主榜(https://www.shanghairanking.cn/rankings/bcur/2021)所有院校信息,并存储在数据库中,同时将浏览器F12调试分析的过程录制Gif加入至博客中。
image
核心代码

#获取大学数据
def get_university_data(url):response = requests.get(url)soup = BeautifulSoup(response.content, "html.parser")html = response.textdata = json.loads(html)return data
#处理数据
def data_process(data):school_data = []school_datas = []if 'data' in data and 'rankings' in data['data']:for item in data['data']['rankings']:ranking = item['rankOverall']         #排名cn_name = item['univNameCn']        #中文名en_name = item['univNameEn']        #英文名name = f"{cn_name} {en_name}"province = item['province']      #省市school_type = item['univCategory']       #学校类型score = float(item['score']) if item['score'] else 0          #总分if name not in school_data:school_data.append((ranking, name, province, school_type, score))return school_data

运行结果
image
image
浏览器F12调试分析:
调试api2
输出信息
https://gitee.com/C-Zhaoying/2025_crawl_project/blob/master/hw2p/3/university.db

心得体会

这次实验跟之前的作业一有点类似,但如果要爬所有院校的话就不能用之前的老方法了,这次是去获取了该网页的api,实际操作还是有些困难的,需要更多的耐心和耐心

完整代码:https://gitee.com/C-Zhaoying/2025_crawl_project/tree/master/hw2p

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

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

相关文章

训练资源大合集

Public NOIP Round #8 Public NOIP Round #7 Public NOIP Round #6 Public NOIP Round #5 Public NOIP Round #4 Public NOIP Round #3 Public NOIP Round #2 Public NOIP Round #1

MyBatis报错SQL 命令未正确结束

MyBatis报错SQL 命令未正确结束如题所示,我使用的是oracle数据库我的SQL如下所示 select max(Id) from user; 这个sql很简单,从user表里查询最大的id值,但是我在测试的时候发现报错SQL 命令未正确结束 解决方法:…

LiveBindings绑定到漂亮的TCombobox

这一课,将演示如何绑定到TCombobox,这个控件通常用来给用户提供选项列表。它们具有比VCL控件较强的定制性,可以使用样式窗口对每一个项进行外观的定制。 如果读者已经看过《一步一步学习使用LiveBindings(9)》,那…

工具 画面

--本篇导航--素材预览面板 合成面板 工具栏 AutoSway插件 AE中可以按Tab键上面的~键(英文输入法下)或双击面板板头,可以将鼠标指针所在区域的面板最大化显示。 素材预览面板 双击素材可以查看素材画面,对于视频素材…

SGLANG Docker容器化部署指南

SGLANG是一个高性能的语言模型推理引擎,旨在为大语言模型(LLM)应用提供高效、灵活的部署和服务能力。该引擎基于sgl-project开源项目开发,支持复杂的提示工程、多轮对话管理和推理优化,广泛应用于智能客服、内容生…

保研经验分享

写在前面 保研结束有一段时间了,正好有幸给本学院同学分享一下经验(当然算不上经验,就是一些经历和心得了),就写点东西,希望能给读者一点启发。今年保研形势还是比较严峻的,虽然名额多了,但是夏令营效力减弱了…

Vibe Coding - 零成本使用claude code 、gpt-5、grok-code-fast-1氛围编程

概述 人工智能驱动的开发已经成为现代编程领域的潮流,越来越多的开发者开始探索如何将 AI 能力集成到自己的项目中。然而,工具的碎片化、接入门槛高、费用昂贵等问题常常让人望而却步。AgentRouter 的出现,为开发者…

MyBatis-Plus分页查询中distinct与order by组合的SQLServer兼容性问题解析 - 教程

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

【React】useMemo 和 useEffect 的用法 - 实践

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

[LangChain] 15. 内存型向量库

回忆 RAG 关键步骤:文本切割 嵌入处理 存储向量数据库向量数据库可以分为这几种类型:内存型 本地自托管 云托管LangChain 内置了 MemoryVectorStore,这就是一个内存型向量库,用于将文档向量存储到内存中,适合本地…

完整教程:从架构师视角看 RPC:分布式系统的灵魂纽带

完整教程:从架构师视角看 RPC:分布式系统的灵魂纽带pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

题解:qoj8047 DFS Order 4

题意:给出 \(n,P\),现在问对于所有 \(n\) 个点且父亲编号小于儿子的树,对其进行 dfs 并且优先遍历编号小的子节点,问有多少种 dfs 序。对 \(P\) 取模。\(n\le 800\)。 做法: 首先考虑如何判定一种 dfs 序是否合法…

题解:qoj8047 DFS Order 4

题意:给出 \(n,P\),现在问对于所有 \(n\) 个点且父亲编号小于儿子的树,对其进行 dfs 并且优先遍历编号小的子节点,问有多少种 dfs 序。对 \(P\) 取模。\(n\le 800\)。 做法: 首先考虑如何判定一种 dfs 序是否合法…

Oracle数据库恢复检查脚本

Oracle数据库恢复检查脚本prompt +----------------------------------------------------------------------------+ prompt | Oracle Database Recovery Check Result | promp…

视野修炼-技术周刊第126期 | TypeScript #1

① 🤫spoilerjs ② 🏆 TypeScript 跃升至 \#1 - GitHub 上最常用的语言 ③ 中国法定假日查询库 ④ type-flag - 类型化命令行参数解析 ⑤ Node v24 已经是最新的LTS 版本 ⑥ TypingSVG ⑦ 腾讯 TDesign 组件库的 u…

详细介绍:FPGA 中的 AXI 总线介绍

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

深入解析:眼控交互:ErgoLAB新一代人机交互方式

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

大模型、智能体和MCP服务间的交互

大模型、智能体和MCP服务间的交互本文以从图书馆借书为例大模型LLM提供智能决策,基于权限结果智能体Agent协调流程,不包含业务逻辑图书馆MCP服务处理业务权限验证(能做什么)认证服务处理基础身份验证(谁),非MCP…

2025年国内成人自考机构口碑推荐排行榜单:权威解析与选择指南

摘要 2025年国内成人自考教育行业迎来新一轮发展机遇,随着终身学习理念的普及和职业晋升需求的增长,成人自考市场规模持续扩大。本文基于权威数据分析和用户口碑评价,为您呈现最新成人自考机构排行榜单,并提供详细…

大信息领域列式存储与云存储的融合发展

大信息领域列式存储与云存储的融合发展pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mon…