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

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

时间:2023-11-09 20:11:53浏览次数:40  
标签:name item column text get 融合 实践 采集 print

一、作业内容

作业①:

熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。
使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。
候选网站:东方财富网:http://quote.eastmoney.com/center/gridlist.html#hs_a_board

输出信息:MYSQL数据库存储和输出格式如下,表头应是英文命名例如:序号id,股票代码:bStockNo……,由同学们自行定义设计表头:
序号 股票代码 股票名称 最新报价 涨跌幅 涨跌额 成交量 成交额 振幅 最高 最低 今开 昨收
1 688093 N世华 28.47 62.22% 10.92 26.13万 7.6亿 22.34 32.0 28.08 30.2 17.55
2......

点击查看部分代码
def getUrl(j):
    global count
    for i in range(70):
        js = 'window.scrollTo(0,%s)' % (i * 100)  # js脚本
        driver.execute_script(js)
    lists = driver.find_element(By.XPATH,"//tbody")
    list = lists.find_elements(By.XPATH,"./tr")
    columns = {0: "代码", 1: "名称", 2: "最新价格", 3: "涨跌额", 4: "涨跌幅", 5: "成交量", 6: "成交额", 7: "振幅",
               8: "最高", 9: "最低", 10: "今开", 11: "昨收"}
    print(columns)
    for i in list:
        column = i.find_elements(By.XPATH,"td")
        no = column[0].text    #序号
        code = column[1].text  #代码
        name = column[2].text#名称
        zuixin = column[4].text#最新价格
        er=    column[5].text#涨跌额
        fu=    column[6].text#涨跌幅
        chengjiaoliang=    column[7].text#成交量
        chengjiaoer  =   column[8].text#成交额
        zhenfu =    column[9].text#振幅
        zuigao =   column[10].text#最高
        zuidi  =  column[11].text#最低
        jinkai =  column[12].text#今开
        zuoshou =  column[13].text#昨收
        print("\t"+no+"\t"+code+"\t"+name+"\t"+zuixin+"\t"+er+"\t"+
              fu,end='')        print("\t"+chengjiaoliang+"\t"+chengjiaoer+"\t"+zhenfu+"\t"+zuigao+zuidi+"\t"+jinkai+"\t"+zuoshou)
if __name__ == '__main__':
    driver = webdriver.Chrome()
    key = ["hs", "sh", "sz"]
    for i in range(len(key)):
        keyword = urllib.parse.quote(key[i])
        driver = webdriver.Chrome()  # 创建Chrome浏览器
        url = f"http://quote.eastmoney.com/center/gridlist.html#{keyword}_a_board"
        driver.get(url)
        getUrl(i)

查看数据库代码
class Mysql:
    def process_item(self, item, spider):
        self.mydb = pymysql.connect(
            host="192.168.149.1",
            port=3306,
            user='root',
            password='123456',
            database="stock",
            charset='utf8'
        )
        self.cursor = self.mydb.cursor()
        self.cursor.execute('''CREATE TABLE IF NOT EXISTS stocks(
                                                  stockname VARCHAR(256),
                                                  name VARCHAR(256),
                                                  newprice VARCHAR(256),
                                                  zhangdiefu VARCHAR(256),
                                                  zhangdieer VARCHAR(256),
                                                  chengjiaoliang VARCHAR(256),
                                                  chengjiaoer VARCHAR(256),
                                                  zhenfu VARCHAR(256),
                                                  zuigao VARCHAR(256),
                                                  zuidi VARCHAR(256),
                                                  jinkai VARCHAR(256),
                                                  zuoshou VARCHAR(256)
                                                   )''')

        self.mydb.commit()
        sql = "insert into stocks values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        self.cursor.execute(sql,(item.get("stockname"),item.get("name"),item.get("newprice"), item.get("zhangdiefu"),item.get("zhangdieer"), item.get("chengjiaoliang"), item.get("chengjiaoer"), item.get("zhenfu"), item.get("zuigao"),item.get("zuidi"), item.get("jinkai"),item.get("zuoshou")))

        self.mydb.commit()
        return item
    def close_spider(self, spider):
        self.mydb.close()

码云链接:
https://gitee.com/lxmlmx/crawl_project/blob/master/作业4/stocks.py
结果截图:

image
image

心得体会:进一步掌握使用selenium来爬取数据。

作业②:

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

输出信息:MYSQL数据库存储和输出格式

Gitee文件夹链接
Git文件夹

Id cCourse cCollege cTeacher cTeam cCount cProcess cBrief
1 Python数据分析与展示 北京理工大学 嵩天 嵩天 470 2020年11月17日 ~ 2020年12月29日 “我们正步入一个数据或许比软件更重要的新时代。——Tim O'Reilly” ……
2......

点击查看代码
# _*_ coding : utf-8 _*_
# @Time : 2023/11/2 15:20
# @Author : lvmingxun
# @File : mooc
# @Project : shucai_homework
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import random
import pymysql

# 声明一个谷歌驱动器,并设置不加载图片,间接加快访问速度
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'profile.managed_default_content_settings.images': 2})
browser = webdriver.Chrome(options=options)
url = "https://www.icourse163.org/search.htm?search=%E5%A4%A7%E6%95%B0%E6%8D%AE#/"
# 声明一个list,存储dict
data_list = []


def start_spider():
    # 请求url
    browser.get(url)
    # 显示等待商品信息加载完成
    WebDriverWait(browser, 1000).until(
        EC.presence_of_all_elements_located(
            (By.ID, "j-courseCardListBox")
        )
    )
    # 将滚动条拉到最下面的位置,因为往下拉才能将这一页的商品信息全部加载出来
    browser.execute_script('document.documentElement.scrollTop=10000')
    # 随机延迟,等下元素全部刷新
    time.sleep(random.randint(3, 6))
    browser.execute_script('document.documentElement.scrollTop=0')

    # 开始提取信息,找到ul标签下的全部li标签
    count = 0
    for link in browser.find_elements(By.XPATH,'//div[@class="u-clist f-bgw f-cb f-pr j-href ga-click"]'):
        count += 1
        # 课程号
        #  course_id = link.find_element_by_xpath('.//div[@class="p-name"]//em').text
        # 课程名称
        course_name = link.find_element(By.XPATH,'.//span[@class=" u-course-name f-thide"]').text
        print("course name ", course_name)
        school_name = link.find_element(By.XPATH,'.//a[@class="t21 f-fc9"]').text
        print("school ", school_name)
        # 主讲教师
        m_teacher = link.find_element(By.XPATH,'.//a[@class="f-fc9"]').text
        print("laoshi:", m_teacher)
        # 团队成员
        try:
            team_member = link.find_element(By.XPATH,'.//span[@class="f-fc9"]').text
        except Exception as err:
            team_member = 'none'
        # print("团队:",team_member)
        # 参加人数
        join = link.find_element(By.XPATH,'.//span[@class="hot"]').text
        join.replace('参加', '')
        print("参加人数", join)
        # 课程进度
        process = link.find_element(By.XPATH,'.//span[@class="txt"]').text
        print('jingdu ', process)
        # 课程简介
        introduction = link.find_element(By.XPATH,'.//span[@class="p5 brief f-ib f-f0 f-cb"]').text
        print(introduction)

        conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="123456", db="mydb", charset="utf8")
        # 获取游标
        cursor = conn.cursor()
        # 插入数据,注意看有变量的时候格式
        try:
            cursor.execute(
                "INSERT INTO mooc (`id`,`course`,`college`,`teacher`,`team`,`count`,`process`,`brief`) VALUES (%s,%s,%s,%s,%s,%s,%s,%s)",
                (str(count), course_name, school_name, m_teacher, team_member, join, process, introduction))
            # 提交
        except Exception as err:
            print("error is ")
            print(err)
            # 关闭连接
        conn.commit()
        conn.close()

        # 遍历


def main():
    start_spider()


if __name__ == '__main__':
    main()
    # 退出浏览器
    browser.quit()

码云链接:https://gitee.com/lxmlmx/crawl_project/blob/master/作业4/mooc.py

运行结果:
image

心得体会:更加熟练使用selenium框架和mysql来爬取网站信息。

作业③:

要求:
掌握大数据相关服务,熟悉Xshell的使用

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

环境搭建:

任务一:开通MapReduce服务

image

image

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

任务三:配置Kafka
image
image

任务四: 安装Flume客户端
image
image
image
image
image
image
image
image

任务五:配置Flume采集数据
image

image

image
心得体会:学会使用华为云做大数据分析的各种配置

标签:name,item,column,text,get,融合,实践,采集,print
From: https://www.cnblogs.com/lxmlmx/p/17822696.html

相关文章

  • postman在数据采集过程中的调试注意事项
    Postman是一个强大的API调试工具,它可以帮助开发人员测试和调试API端点,以确保它们按预期工作。在使用Postman进行接口调试时,以下是一些注意事项和可能出现的问题,以及如何解决这些问题。 1.确保请求参数正确在测试API接口时,确保您提供了正确的请求参数非常重要。Postman......
  • C#学习-winform窗口程序实践-简易学生信息管理系统
    最近逐步开始学习C#,今天完成了一个简易的C#实现的winform窗口程序,如下图所示,可以实现插入,修改,删除学生信息和查询学生成绩;使用VS并连接了mysql数据库 插入 选中相应的信息可以修改 删除 ......
  • Kubernetes日志采集Sidecar模式介绍
    Kubernetes(K8S)作为CNCF(cloudnativecomputingfoundation)的一个核心项目,背靠Google和Redhat的强大社区,近两年发展十分迅速,在成为容器编排领域中领导者的同时,也正在朝着PAAS底座标配的方向发展。日志采集方式日志作为任一系统不可或缺的部分,在K8S的官方文档中也介绍了多种的日......
  • loki采集k8s日志
    前言loki是轻量、易用的日志聚合系统。如果你的k8s集群规模并不大,推荐使用grafana+loki的方案来做微服务日志的采集;Loki组成loki架构很简单,主要由3部分组成:loki:服务端,负责存储日志和处理查询;promtail:采集端,负责采集日志发送给loki;grafana:负责采集日志的展示;promtail.ymlkubectl......
  • DolphinDB 流计算优化实践:时延统计与性能调优
    在实时计算中,端到端的响应延迟是衡量计算性能时最重要的指标。DolphinDB内置的流数据框架支持流数据的发布与订阅、流式增量计算、实时关联等,用户能够快速实现复杂的实时计算任务,达到毫秒级甚至亚毫秒级的效果,而无需编写大量代码。本文介绍如何对DolphinDB流计算任务进行全链路......
  • 最佳实践for Postgresql-Linux
    适用范围postgresqlonlinuxLinux内核提供了各种可能影响性能的配置选项,为了获得最佳性能,PostgreSQL数据库取决于正确定义的操作系统参数。操作系统内核参数配置不当可能会导致数据库服务器性能下降与系统稳定。因此,必须根据数据库服务器及其工作负载配置这些参数。就像任何其他......
  • Hadoop细粒度近实时慢节点告警实践
    1.背景在https://blog.51cto.com/u_15327484/8260931文章中,介绍了通过抓取Yarnweb页面的方式获取task级别的进度,并且将task进度通过纵向的历史进度进行预测对比检查作业进度是否符合预期。对于task级别的进度,不仅可以用作纵向对比,还可以进行横向对比。当多次发生某个节点上执行......
  • Hadoop作业实时智能监控项目实践
    1.背景对于Hadoop集群监控,有基于Linux的硬件告警,比如磁盘,内存,网络带宽告警;有基于组件的告警,例如OOM报警、RPC告警。这些告警能反应个体机器的运行状况,不能反映整个集群的运行状况;同时,这些告警都是在已知的故障指标,但是对于未知的指标,可能已经发生并且对系统产生较大影响,由于没有......
  • 管理类iOS软件开发:常见代码与最佳实践
    随着智能手机的日益普及,iOS软件开发成为了当今的热门领域,在开发过程中,管理类代码对于确保应用程序的稳定性和性能至关重要,本文将介绍管理类iOS软件开发中常见的代码及最佳实践,帮助您更好地应对实际开发中的挑战。一、iOS软件开发概述iOS是由苹果公司开发的移动操作系统,广泛应用于iP......
  • 数据采集与融合技术实践四
    第四次作业一、作业内容作业①:要求:熟练掌握Selenium查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。使用Selenium框架+MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。候选网站:东方财富网:http://quote.eastmoney.com/......