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

news/2024/11/16 14:19:31/文章来源:https://www.cnblogs.com/aband/p/18549324

gitee链接:作业4

作业①:

要求:

熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。
使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。
候选网站:东方财富网:http://quote.eastmoney.com/center/gridlist.html#hs_a_board
输出信息:MYSQL数据库存储和输出格式如下,表头应是英文命名例如:序号id,股票代码:bStockNo……,由同学们自行定义设计表头

作业代码:

点击查看代码
from selenium.webdriver.common.by import By
from selenium import webdriver
import pymysql
import time# 连接到数据库
conn = pymysql.connect(host='localhost', user='root', password='350102', database='gupiao')
cursor = conn.cursor()# 创建数据库表
cursor.execute("""CREATE TABLE IF NOT EXISTS 沪深A股 (序号 VARCHAR(20),股票代码 VARCHAR(20),股票名称 VARCHAR(20),最新报价 VARCHAR(20),涨跌幅 VARCHAR(20),涨跌额 VARCHAR(20),成交量 VARCHAR(20),成交额 VARCHAR(20),振幅 VARCHAR(20),最高 VARCHAR(20),最低 VARCHAR(20),今开 VARCHAR(20),昨收 VARCHAR(20))
""")
cursor.execute("""CREATE TABLE IF NOT EXISTS 上证A股 (序号 VARCHAR(20),股票代码 VARCHAR(20),股票名称 VARCHAR(20),最新报价 VARCHAR(20),涨跌幅 VARCHAR(20),涨跌额 VARCHAR(20),成交量 VARCHAR(20),成交额 VARCHAR(20),振幅 VARCHAR(20),最高 VARCHAR(20),最低 VARCHAR(20),今开 VARCHAR(20),昨收 VARCHAR(20))
""")
cursor.execute("""CREATE TABLE IF NOT EXISTS 深证A股 (序号 VARCHAR(20),股票代码 VARCHAR(20),股票名称 VARCHAR(20),最新报价 VARCHAR(20),涨跌幅 VARCHAR(20),涨跌额 VARCHAR(20),成交量 VARCHAR(20),成交额 VARCHAR(20),振幅 VARCHAR(20),最高 VARCHAR(20),最低 VARCHAR(20),今开 VARCHAR(20),昨收 VARCHAR(20))
""")
conn.commit()# SQL 插入语句
sql1 = "INSERT INTO 沪深A股 (序号, 股票代码, 股票名称, 最新报价, 涨跌幅, 涨跌额, 成交量, 成交额, 振幅, 最高, 最低, 今开, 昨收) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
sql2 = "INSERT INTO 上证A股 (序号, 股票代码, 股票名称, 最新报价, 涨跌幅, 涨跌额, 成交量, 成交额, 振幅, 最高, 最低, 今开, 昨收) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
sql3 = "INSERT INTO 深证A股 (序号, 股票代码, 股票名称, 最新报价, 涨跌幅, 涨跌额, 成交量, 成交额, 振幅, 最高, 最低, 今开, 昨收) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"# 初始化 Selenium 浏览器
url = "http://quote.eastmoney.com/center/gridlist.html#hs_a_board"
page = input("请分别输入“沪深 A 股”、“上证 A 股”、“深证 A 股”3 个板块要爬取的页数:")
pagelist = list(map(int, page.split()))
pageA, pageB, pageC = pagelist[0], pagelist[1], pagelist[2]
driver = webdriver.Chrome()
driver.get(url)# 爬取“沪深 A 股”数据
print("沪深 A 股")
for i in range(pageA):content = driver.find_elements(By.XPATH, '//*[@id="table_wrapper-table"]/tbody/tr')for j in content:data = j.text.split(" ")values = (data[0], data[1], data[2], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15])cursor.execute(sql1, values)conn.commit()next_button = driver.find_element(By.XPATH, '//a[@class="next paginate_button"]')next_button.click()time.sleep(2)# 爬取“上证 A 股”数据
driver.get("http://quote.eastmoney.com/center/gridlist.html#sh_a_board")
print("上证 A 股")
time.sleep(2)
for i in range(pageB):content = driver.find_elements(By.XPATH, '//*[@id="table_wrapper-table"]/tbody/tr')for j in content:data = j.text.split(" ")values = (data[0], data[1], data[2], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15])cursor.execute(sql2, values)conn.commit()next_button = driver.find_element(By.XPATH, '//a[@class="next paginate_button"]')next_button.click()time.sleep(2)# 爬取“深证 A 股”数据
driver.get("http://quote.eastmoney.com/center/gridlist.html#sz_a_board")
print("深证 A 股")
time.sleep(2)
for i in range(pageC):content = driver.find_elements(By.XPATH, '//*[@id="table_wrapper-table"]/tbody/tr')for j in content:data = j.text.split(" ")values = (data[0], data[1], data[2], data[6], data[7], data[8], data[9], data[10], data[11], data[12], data[13], data[14], data[15])cursor.execute(sql3, values)conn.commit()next_button = driver.find_element(By.XPATH, '//a[@class="next paginate_button"]')next_button.click()time.sleep(2)# 关闭连接
cursor.close()
conn.close()
driver.quit()

实现结果:



作业②:

要求:

熟练掌握 Selenium 查找HTML元素、实现用户模拟登录、爬取Ajax网页数据、等待HTML元素等内容。
使用Selenium框架+MySQL爬取中国mooc网课程资源信息(课程号、课程名称、学校名称、主讲教师、团队成员、参加人数、课程进度、课程简介)
候选网站:中国mooc网:https://www.icourse163.org
输出信息:MYSQL数据库存储和输出格式

作业代码:

点击查看代码
from selenium.webdriver.common.by import By
from selenium import webdriver
import time
import pymysqlconn = pymysql.connect(host='localhost', user='root', password='350102', database='MOOC')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS mooc(""Id varchar(20),cCourse varchar(20),""cCollege varchar(20),cTeacher varchar(20),""cTeam varchar(20),""cCount varchar(20),cProcess varchar(50),""cBrief varchar(1000))")
conn.commit()
sql = "INSERT INTO mooc (Id,cCourse,cCollege,cTeacher,cTeam,cCount,cProcess,cBrief) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"n = 1
user_name = input("请输入你的账号:")
password = input("请输入你的密码:")driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.icourse163.org/")
load = driver.find_element(By.XPATH,'//*[@id="app"]/div/div/div[1]/div[3]/div[3]/div')
load.click()
time.sleep(3)
iframe = driver.find_element(By.XPATH,'/html/body/div[13]/div[2]/div/div/div/div/div/div[1]/div/div[1]/div[2]/div[2]/div[1]/div/iframe')
driver.switch_to.frame(iframe)
driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[2]/div[2]/input').send_keys(user_name)
driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[4]/div[2]/input[2]').send_keys(password)
driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[6]/a').click()
time.sleep(5)
driver.switch_to.default_content()
time.sleep(3)
driver.find_element(By.XPATH,'//*[@id="privacy-ok"]').click()
driver.find_element(By.XPATH,'/html/body/div[4]/div[2]/div[1]/div/div/div[1]/div[1]/div[1]/span[1]/a').click()
driver.switch_to.window(driver.window_handles[-1])
for _ in range(2):for i in range(5):list = driver.find_element(By.XPATH,f'//*[@id="channel-course-list"]/div/div/div[2]/div[1]/div[{i+1}]/div/div[3]/div[1]').text.split("\n")driver.find_element(By.XPATH,f'//*[@id="channel-course-list"]/div/div/div[2]/div[1]/div[{i+1}]').click()driver.switch_to.window(driver.window_handles[-1])team = driver.find_elements(By.XPATH,'//*[@class="f-fc3"]')m = []for j in team:m.append(j.text)m = ','.join(m)list.append(m)count = driver.find_element(By.XPATH,'//*[@class="count"]').textlist.append(count[2:-3])date = driver.find_element(By.XPATH,'//*[@id="course-enroll-info"]/div/div[1]/div[2]/div/span[2]').textlist.append(date)brief = driver.find_element(By.XPATH,'//*[@id="j-rectxt2"]').textlist.append(brief)values = (n, list[0], list[1], list[2], list[3], list[4], list[5], list[6])cursor.execute(sql, values)conn.commit()n = n+1driver.close()driver.switch_to.window(driver.window_handles[-1])driver.find_element(By.XPATH,'//*[@id="channel-course-list"]/div/div/div[2]/div[2]/div/a[10]').click()time.sleep(2)cursor.close()

实现结果:

作业③:

要求:

掌握大数据相关服务,熟悉Xshell的使用
完成文档 华为云_大数据实时分析处理实验手册-Flume日志采集实验(部分)v2.docx 中的任务,即为下面5个任务,具体操作见文档。

环境搭建:

任务一:开通MapReduce服务

实时分析开发实战:

任务一:Python脚本生成测试数据

任务二:配置Kafka

遭遇问题:

咨询助教与华为云工程师皆未解决,故未完成;
任务三: 安装Flume客户端
任务四:配置Flume采集数据

实验心得:

通过这一次的数据采集与融合技术的实验,我提升了自身对于使用Selenium框架+MySQL爬取网页信息的综合能力,并学习了华为云平台配置的基本信息。

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

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

相关文章

团队作业4——项目冲刺-第六篇

团队作业4——项目冲刺-第六篇这个作业属于哪个课程 <计科22级34班>这个作业要求在哪里 <作业要求>这个作业的目标 修改完善需求规格说明书、系统设计、Alpha任务分配计划、测试计划GitHub 链接 https://github.com/tangliweiwww/ChatGpt🍟一、团队 1.团队名称:…

20222306 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 (1)从www.besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式 该域名对应IP地址 IP地址注册人及联系方式 IP地址所在国家、城市和具体地理位置 PS:使用whois、dig、nslookup、traceroute、以及各类在线和离线工…

playwright ubuntu 出现 playwright._impl._errors.TimeoutError: Locator.click: Timeout 30000ms exceeded

win系统上正常, ubuntu报错 如下报错:解决Linux环境是英文browser.new_context(locale="zh-CN")本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18549315

【ARM CoreLink 系列 1 -- SoC 架构 总线 互联(interconnect) 介绍】

概述 在 摩尔定律 的推动下,集成电路工艺取得了高速发展,单位面积上的晶体管数量不断增加。片上系统(System-on-Chip,SoC)具有集成度高、功耗低、成本低等优势,已经成为大规模集成电路系统设计的主流方向,解决了通信、图像、计算、消费电子等领域的众多挑战性的难题。随…

golang: 在线上用nginx部署应用

一,启动应用: 1,编译程序 $ go build 2,用nohup启动应用的二进制程序 $ nohup /data/goapp/industry/industry >> /data/logs/gologs/back.log 2>&1 & [1] 4896 3,检查应用是否启动: $ ss -lntp | grep 3000 LISTEN 0 4096 0.0.0.0:3000 …

go fiber:路由中间件

一,目录结构:二,代码 1,中间件代码 package middlewareimport ("fmt""github.com/gofiber/fiber/v2""industry/config" )// token校验 func CheckUser(c *fiber.Ctx) error {token:=c.Query("token")fmt.Println("token:"…

20222327 2024-2025-1 《网络与系统攻防技术》实验六实验报告

一、实验内容 学习掌握了Metasploit工具的使用,具体的操作总结来说就是Search-Use-Show-Set-Exploit/run 学习了利用相关漏洞进行模拟攻击的操作,对防范恶意攻击有了一些认识(安装杀软,不要点击陌生网站、文件链接等) 二、实验过程 1、前期渗透 ①主机发现(可用Aux中的ar…

快速量产低功耗 4G 定位方案?Air201 模组来搞定!

今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获。今天我们来了解的是Air201模组快速量产低功耗 4G 定位方案,希望大家有所收获。 寻寻觅觅低功耗4G定位方案? 一个Air201就够了! ——定位准、体积小、功耗低,助力行业客户快速量产! 01 Air201是…

如何挑选海外4G模组?这里有秘籍!

今天我会告诉大家如何挑选海外4G模组,我会把优势给贴出作为参考。去过国外的都知道国外4G网络各种状况实在让人无力吐槽,做海外设备的朋友,是时候了解一下Air780EEN/EEU/EEJ系列海外模组——集成vSIM功能,最大程度解决海外联网稳定性的问题。今天我会告诉大家如何挑选海外4…

无线基础配置

所需配置 AC1 [AC6605]vlan batch 10 20 100 [AC6605]interface GigabitEthernet 0/0/1 [AC6605-GigabitEthernet0/0/1]port link-type trunk[AC6605-GigabitEthernet0/0/1]port trunk allow-pass vlan 10 20 100 [AC6605]interface Vlanif 100 [AC6605-Vlanif100]ip address 1…

基于YOLO实现滑块验证码破解

申明:本案例中的思路和技术仅用于学习交流。请勿用于非法行为。 一、训练模型 详细训练步骤和导出模型参考 滑块验证码识别模型训练 二、模型试用 通过YoloDotNet运行模型,计算出滑块缺口位置后用RESTful格式的接口返回坐标给其它应用调用。YoloDotNet案例参考 物体检测框架Y…

本地oracle数据库实例启动报错 TNS-12545 TNS-12560 TNS-00515

oracle 实例启动报错 TNS-12545 TNS-12560 TNS-00515 具体提示如下: 监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=host.docker.internal)(PORT=1521))) TNS-12545: 因目标主机或对象不存在, 连接失败 TNS-12560: TNS: 协议适配器错误 TNS-00515: 因目标主机…