首页 > 其他分享 >2023数据采集与融合技术实践四

2023数据采集与融合技术实践四

时间:2023-11-07 23:22:53浏览次数:37  
标签:varchar driver list 融合 采集 2023 20 div find

作业一:

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

from selenium.webdriver.common.by import By
from selenium import webdriver
import pymysql
import time

conn = pymysql.connect(host='localhost',password='123456',user='root',database='spider')
cursor = conn.cursor()
cursor.execute("create table 沪深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 上证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 深证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()
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)"
url = "http://quote.eastmoney.com/center/gridlist.html#hs_a_board"
page = input("请分别输入“沪深 A 股”、“上证 A 股”、“深证 A 股”3 个板块要爬取的页数:")
pagelist = list(map(int, page.split()))
pageA = pagelist[0]
pageB = pagelist[1]
pageC = pagelist[2]
driver = webdriver.Chrome()
driver.get(url)
print("沪深 A 股")
for i in range(pageA):
    content = driver.find_elements(By.XPATH, '//*[@id="table_wrapper-table"]/tbody/tr')
    for j in content:
        list = j.text.split(" ")
        values = (
        list[0], list[1], list[2], list[6], list[7], list[8], list[9], list[10], list[11], list[12], list[13], list[14],
        list[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)


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:
        list = j.text.split(" ")
        values = (
            list[0], list[1], list[2], list[6], list[7], list[8], list[9], list[10], list[11], list[12], list[13],
            list[14],
            list[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)

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:
        list = j.text.split(" ")
        values = (
            list[0], list[1], list[2], list[6], list[7], list[8], list[9], list[10], list[11], list[12], list[13],
            list[14],
            list[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()

3.运行结果:


4.实验心得:
这一次作业不难,但是更加熟练了对pymsql的使用

作业二:

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

2.代码:

from selenium.webdriver.common.by import By
from selenium import webdriver
import time
import pymysql
n = 1
zhanghao = input("请输入你的账号:")
mima = input("请输入你的密码:")
conn = pymysql.connect(host='localhost', user='root', password='123456', database='spider')
cursor = conn.cursor()
cursor.execute("create table 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)"



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(zhanghao)
driver.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[4]/div[2]/input[2]').send_keys(mima)
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"]').text
        list.append(count[2:-3])
        date = driver.find_element(By.XPATH,'//*[@id="course-enroll-info"]/div/div[1]/div[2]/div/span[2]').text
        list.append(date)
        brief = driver.find_element(By.XPATH,'//*[@id="j-rectxt2"]').text
        list.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+1
        driver.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()
conn.close()

3.运行结果:

4.心得体会:
这个作业做了很久,主要是登陆时候涉及到iframe的弹窗知识和新网页切换的知识

作业三:

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

实时分析开发实战:
任务一:Python 脚本生成测试数据

任务二:配置 Kafka

任务三: 安装 Flume 客户端


任务四:配置 Flume 采集数据

标签:varchar,driver,list,融合,采集,2023,20,div,find
From: https://www.cnblogs.com/esskeetit/p/17816323.html

相关文章

  • 2023年11月7日总结
    更好的观看地址总结今天早上是练习赛。不是很难。今天没有什么印象深刻的事情。确实没有。大家都很正常,像往常一样。大家都很安静,很爱唱歌。似乎与往常没有什么不同。哦对了,昨天开始感觉变冷了,主要是早上,还有这几天天气都很晴朗,白天都很热,教室里也很热。突然发现一些事情,一些事......
  • NOIP2023模拟13联测34 总结
    NOIP2023模拟13联测34总结目录NOIP2023模拟13联测34总结比赛过程题目A.origen题目大意思路B.competition题目大意思路C.tour题目大意D.abstract题目大意比赛过程看了一下题,感觉就\(T2\)有一点思路。\(T1\)先打一个\(30\)分暴力,感觉要分位考虑,想了大概\(1h\)就跳......
  • 华东师大2023程序设计基础代码
    Lab07递归与函数1.正整数的各位数字之和#include<stdio.h>#include<math.h>intsum(inta);intmain(){inta=0;scanf("%d",&a);printf("%d",sum(a));return0;}intsum(inta){if(a<10){ret......
  • 2023.11.7值得推荐的一款服务器空间
    ,已经体验一个月咯,非常不错的免费资源,适合大家去了解了解~!他们家的免费空间,免费服务器,非常稳定,非常靠谱,值得拥有,价格厚道~!免备案服务,域名管理等等服务,应有尽有,2023年你值得了解,他们家的免费云服务器还是独立IP的哦,非常非常好,非常NICE~!官网地址:https://www.sanfengyun.com......
  • 2023.11.7——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mybatis明日计划:学习......
  • NOIP2023模拟13联测34 B.competition
    NOIP2023模拟13联测34B.competition目录NOIP2023模拟13联测34B.competition题目大意思路code题目大意现在有\(n\)个区间\([l_i,r_i]\),现在问你选取若干的连续的区间的区间并的大小的和。思路设\(pre_{i,j}\)表示前\(i-1\)个区间内,包含点\(j\)的最靠右的......
  • NOIP2023模拟13联测34 A. origen
    NOIP2023模拟13联测34A.origen目录NOIP2023模拟13联测34A.origen题目大意思路code题目大意给定\(n\)个整数\(a_1,a_2,a_3\cdotsa_n\),求\[\sum_{i=1}^n\sum_{j=i}^n(\oplus_{k=i}^ja_k)^2\mod998244353\]\(n\le2*10^5,0\lea_i\le2*10^5\)思路设......
  • NOIP2023模拟8联测29 总结
    NOIP2023模拟8联测29总结题目T1集合大意给出一个序列\(S\),找出有多少个区间\([L,R]\),使得\([L,R]\)值域的连续长度不超过\(k\)。\(n\leq2*10^5,k\leqn\)赛时思路对于区间\([L,R]\),如果有\([L',R']\)符合答案(\(R'\leqR\)且\(L\leqL'\)),那么区间\([L,R']\)......
  • NOIP2023模拟9联测30 总结
    NOIP2023模拟9联测30总结题目T1上海大意判断是否存在\(n\)正整数,使得\(n^2\)是\(k\)的倍数,且\(n\)不是\(k\)的倍数。如果存在,输出最小的\(n\);不存在输出\(-1\)。\(k\leq10^{12}\)赛时思路对于\(n\)来说,\(n\)一定要包含\(k\)有的质因数,而且\(n\)不......
  • NOIP2023模拟9联测32 总结
    NOIP2023模拟9联测32总结题目T1花菖蒲大意构造一个一度点数等于\(a\),二度点数等于\(b\),总点数小于\(2000\)的树。\(a,b\leq200\)赛时思路构造一条链,去除首位后有\(b\)个节点,这\(b\)个节点接一个一度点,加上首位两个一度点,如果一度点不够,那么将首部改造一个一度......