数据采集与融合技术实践作业四
数据采集与融合技术实践作业四
gitee链接:https://gitee.com/wei-yuxuan6/myproject/tree/master/作业4
作业①
selenium爬取股票实验
-
要求:
熟练掌握 Selenium 查找 HTML 元素、爬取 Ajax 网页数据、等待 HTML 元素等内容。
使用 Selenium 框架+ MySQL 数据库存储技术路线爬取“沪深 A 股”、“上证 A 股”、“深证 A 股”3 个板块的股票数据信息。
候选网站:东方财富网:
http://quote.eastmoney.com/center/gridlist.html#hs_a_board -
输出信息:MYSQL 数据库存储和输出格式如下,表头应是英文命名例如:序号id,股票代码:bStockNo……,由同学们自行定义设计表头:
-
过程
使用selenium模拟浏览器爬取不仅需要定位所需信息的位置,还需要定位按钮、文本框等位置
这里实现了爬取沪深京A股、上证A股、深圳A股3个板块各两页的股票数据
分析网页结构股票信息都在表格<tbody>
中,每个股票在一个<tr>
元素中,字段分别在不同的<td>
中,需要找到自己需要的字段(如序号在第一个td
中……)
想要实现自动翻页就要模拟点击下一页按钮,按钮在class=next paginate_button
的<a>
标签中
实现selenium需要使用driver.find_element
定位元素,然后模拟点击nextpage.click()
题目还要求跳转到上证A股和深证A股,但是这个不是按钮,而是在<a>
标签的herf属性中有页面的链接,所以需要定位到这个元素后使用get_attribute("href")
得到这两个页面的链接,并再次使用driver.get()
发起请求
还有需要等待元素加载,这里使用了强制等待和隐性等待,强制等待用于点击按钮之后的等待(防止操作过快),隐性等待用于加载页面元素的等待,分别使用了time.sleep(1.5)
和WebDriverWait(driver, 10, 0.5).until( EC.presence_of_element_located((By.XPATH, "//table[@id='table_wrapper-table']")))
(等待表格元素出现)
题目还要求了爬取到的数据存储到MySQL中,需要打开数据库、创建表、插入数据、关闭表等操作 -
部分代码
数据库的操作如下下面是获取每个页面的股票数据的代码,都使用了XPATH,使用position定位对应的
<td>
元素,.text
获取元素中的文本,每获取一条数据就插入数据库下面是翻页的代码,找到下一页按钮并点击,再次调用stockinfo函数抓取下一页的股票信息
创建WebDriver对象并设置浏览器选项
下面是发送请求的代码,还有获取上证A股、深圳A股的链接并发送请求访问
-
结果
gitee链接:https://gitee.com/wei-yuxuan6/myproject/blob/master/作业4/1.py
爬取结果
沪深京A股
上证A股
深圳A股
存储到数据库中的数据
心得体会
实践了使用selenium模拟用户点击和访问其他页面的过程,selenium可以获取动态加载之后的数据,还实践了将爬取到的数据存储到MySQL中,但是在完成这个实验的过程中出现了一个问题
搜索得到错误是因为
可能是切换到另一个板块,不能仅从当前上下文中重新定位它,也不能切换回一个有效的上下文,可以使用refresh刷新页面重新加载数据
作业②
selenium获取mooc课程信息实验
-
要求:
熟练掌握 Selenium 查找 HTML 元素、实现用户模拟登录、爬取 Ajax 网页数据、等待 HTML 元素等内容。 -
使用 Selenium 框架+MySQL 爬取中国 mooc 网课程资源信息(课程号、课程名称、学校名称、主讲教师、团队成员、参加人数、课程进度、课程简介)
候选网站:中国 mooc 网:https://www.icourse163.org -
输出信息:MYSQL 数据库存储和输出格式
-
过程
题目要求实现登录,所以进入网站之后要找到登录按钮并模拟点击
点击之后会跳出登录框,想要让selenium模拟用户输入手机号和密码自动登录,就要让selenium找到手机号和密码框,但是登录框不是在原来的页面上,需要使用driver.switch_to.frame(iframe)
,将焦点切换到登录框iframe中,就可以在里面输入和点击,使用.send_keys("")
输入文本,登录成功之后还需要景焦点切换到原来的界面
登录之后,找到搜索框和搜索按钮,模拟输入想要查询的课程
点击搜索按钮之后跳转到搜索到的课程页面,分析页面可得到对应课程的课程名称、学习、老师、参加人数,但是得不到完整的介绍和开课时间,所以需要再点击进去每一个课程进一步爬取
只需要点击每一个课程框就能跳转到课程详细页面
等位到开课时间和课程介绍,获取数据
跳转到新的页面时需要使用driver.switch_to.window(driver.window_handles[-1])
,将焦点切换到新的页面,爬取到对应数据后使用driver.close()
将新打开的页面关闭,避免打开太多页面,再使用driver.switch_to.window(driver.window_handles[0])
切换到原页面(即搜索到的课程页面)
同时在爬取的过程中需要很多等待操作,因为需要加载的页面比较多,也是使用了强制等待和隐性等待,强制等待用于点击按钮之后和输入文本之后的等待(防止操作过快),隐性等待用于加载页面元素的等待。 -
部分代码
数据库代码与第一个实验差不多这里就不展示
下面时登录的代码主要是焦点的切换搜索部分代码
获取课程信息代码,主要也是焦点的切换,切换到新打开的窗口,还有就是授课教师部分,有的只有一个,有的有多个,只有一个时cTeacher和cTeam都是这个老师,有多个时选择第一个作为cTeacher,而且后面的老师在另一个标签元素中,所以cTeam需要分开讨论
主函数,创建webdriver对象并发送请求
-
结果
gitee链接:https://gitee.com/wei-yuxuan6/myproject/blob/master/作业4/2.py
selenium模拟输入和跳转,也可以实现翻页,因为跳转比较慢而且需要一个一个课程点入所以只爬取了一页的课程信息
获取到的课程信息
存储到数据库的课程信息
心得体会
通过这个实验我了解到了爬取时对于焦点的切换,切换到登录的frame和新跳转的页面,还有复习了实现用户模拟登录、爬取 Ajax 网页数据、以及等待 HTML 元素
完成这个实验用的时间比较多,主要是因为机房网络不好总是加载不出来,还有一开始不知道需要切换焦点一直调试又一直找不到,还有定位元素的时候要准确,可以直接使用浏览器”检查“的copy XPATH
作业③
华为云Flume日志采集实验
- 要求:
• 掌握大数据相关服务,熟悉 Xshell 的使用
• 完成文档 华为云_大数据实时分析处理实验手册-Flume 日志采集实验(部
分)v2.docx 中的任务,即为下面 5 个任务,具体操作见文档。
• 环境搭建:
·任务一:开通 MapReduce 服务
• 实时分析开发实战:
·任务一:Python 脚本生成测试数据
·任务二:配置 Kafka
·任务三: 安装 Flume 客户端
·任务四:配置 Flume 采集数据
输出:实验关键步骤或结果截图。 - 实验截图
- 开通MapReduce服务,选择自定义购买
配置并购买
给集群的master节点绑定弹性IP
修改安全组规则
- Python脚本生成测试数据
进入PuTTY,使用master的弹性公网并登录master节点
编写python脚本
执行Python命令,测试生成100条数据并使用more命令查看生成的数据
- 配置Kafka
进入MRS Manager集群管理,在mrs概览中进入
下载kafka客户端
校验下载的客户端文件包,安装Kafka运行环境
安装Kafka客户端,在kafka中创建topic
- 安装Flume客户端
进入MRS Manager下载Flume客户端,校验下载的客户端文件包,安装Flume运行环境
安装Flume客户端
- 配置Flume采集数据
进入Flume安装目录,在conf目录下编辑文件properties.properties
创建消费者消费kafka中的数据
执行命令
新建PuTTY窗口,进入Python脚本所在目录
执行python脚本,再生成一份数据,原窗口有数据产生
- 开通MapReduce服务,选择自定义购买
心得体会
通过本次学习初步认识了Flume,认识到Flume是一个分布式、可靠和高可用的海量日志聚合系统,可以用来收集、聚合和移动大量日志数据,支持数据的简单处理,并将其写入到各种数据接受方,它不仅仅是一个数据采集工具,它更是一个强大的数据处理平台,具有灵活性、可靠性和强大的数据处理能力。本次实验在华为云平台上实践了Flume日志采集,对该过程有了初步体会和认识。
__EOF__

本文链接:https://www.cnblogs.com/mysterious-x/p/18551479.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」