首页 > 其他分享 >数据采集-实践4

数据采集-实践4

时间:2023-11-15 23:03:11浏览次数:31  
标签:text selenium 实践 采集 import div 数据 find browser

作业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文件夹链接: https://gitee.com/dong-qi168/sjcjproject/blob/master/%E4%BD%9C%E4%B8%9A4/p1.py

关键代码与结果展示

·p1.py

from selenium import webdriver
from selenium.webdriver.edge.options import Options
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.edge.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
import sqlite3

def spider():
    index = 1
    max_page = driver.find_element(By.CSS_SELECTOR,"#main-table_paginate > span.paginate_page > a:nth-child(5)").text
    max_page = eval(max_page)
    max_page = 5
    print(max_page)
    for page in range(max_page):
        # WebDriverWait(driver, 10).until(expected_conditions.presence_of_element_located((By.CSS_SELECTOR,"#table_wrapper-table > tbody > tr")))
        trlist = driver.find_elements(By.CSS_SELECTOR,"#table_wrapper-table > tbody > tr")
        for tr in trlist:
            res1 = [str(index)]
            index += 1
            for i in [2,3,5,6,7,8,9,10,11,12,13,14]:
                res1.append(tr.find_element(By.CSS_SELECTOR,"td:nth-child(" + str(i)+ ")").text)
            print(res1)
            res.append(res1)
        if page <= max_page - 2 :
            next_button = driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/div[2]/div[5]/div/div[2]/div/a[2]')
            webdriver.ActionChains(driver).move_to_element(next_button ).click(next_button ).perform()
            time.sleep(1.5)

edge_options = Options()
driver = webdriver.Edge(options=edge_options)
res = []

driver.get("http://quote.eastmoney.com/center/gridlist.html#sh_a_board")
spider()

driver.execute_script("window.open('http://quote.eastmoney.com/center/gridlist.html#sz_a_board','_self');")
time.sleep(1.5)
spider()

driver.execute_script("window.open('http://quote.eastmoney.com/center/gridlist.html#bj_a_board','_self');")
time.sleep(1.5)
spider()

db = sqlite3.connect('p1.db')
sql_text = '''CREATE TABLE scores
                (序号 TEXT,
                    股票代码 TEXT,
                    股票名称 TEXT,
                    最新报价 TEXT,
                    涨跌幅 TEXT,
                    涨跌额 TEXT,
                    成交量 TEXT,
                    成交额 TEXT,
                    振幅 TEXT,
                    最高 TEXT,
                    最低 TEXT,
                    今开 TEXT,
                    昨收 TEXT);'''
db.execute(sql_text)
db.commit()

for item in res:
    sql_text = "INSERT INTO scores VALUES('"+item[0] + "'"
    
    for i in range(len(item) - 1):
        sql_text  = sql_text + ",'" + item[i+1] + "'"

    sql_text = sql_text +  ")"
    print(sql_text)
    db.execute(sql_text)
    db.commit()
    
db.close()

·结果展示

·运行情况

·结果查看

作业心得

加深了对selenium爬取网页方法的理解与运用的熟练程度

作业2

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

关键代码与结果展示

·p2.py

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from scrapy.selector import Selector
import time

from sqlalchemy import create_engine


browser = webdriver.Chrome()
url = 'https://www.icourse163.org/'
browser.get(url)
time.sleep(2)


denglu=browser.find_element(By.XPATH,'//*[@id="app"]/div/div/div[1]/div[3]/div[3]/div')
denglu.click()
time.sleep(3)
browser.switch_to.default_content()
browser.switch_to.frame(browser.find_elements(By.TAG_NAME,'iframe')[0])


phone=browser.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[2]/div[2]/input')
phone.clear()
phone.send_keys("15396089508")
time.sleep(3)
password=browser.find_element(By.XPATH,'/html/body/div[2]/div[2]/div[2]/form/div/div[4]/div[2]/input[2]')
password.clear()
password.send_keys("dqdq123.")
deng=browser.find_element(By.XPATH,'//*[@id="submitBtn"]')
deng.click()
time.sleep(5)
browser.switch_to.default_content()
select_course=browser.find_element(By.XPATH,'/html/body/div[4]/div[1]/div/div/div/div/div[7]/div[1]/div/div/div[1]/div/div/div/div/div/div/input')
select_course.send_keys("python")
dianji=browser.find_element(By.XPATH,'//html/body/div[4]/div[1]/div/div/div/div/div[7]/div[1]/div/div/div[2]/span')
dianji.click()
time.sleep(3)

content = browser.page_source
print(content)

browser.quit()
selector = Selector(text=content)
rows = selector.xpath("//div[@class='m-course-list']/div/div")

data = []

for row in rows:
    lis = []
    course= row.xpath(".//span[@class=' u-course-name f-thide']//text()").extract()
    course_string="".join(course)
    school=row.xpath(".//a[@class='t21 f-fc9']/text()").extract_first()
    teacher=row.xpath(".//a[@class='f-fc9']//text()").extract_first()
    team = row.xpath(".//a[@class='f-fc9']//text()").extract()
    team_string=",".join(team)
    number = row.xpath(".//span[@class='hot']/text()").extract_first()
    time = row.xpath(".//span[@class='txt']/text()").extract_first()
    jianjie=row.xpath(".//span[@class='p5 brief f-ib f-f0 f-cb']//text()").extract()
    jianjie_string=",".join(jianjie)

    lis.append(course_string)
    lis.append(school)
    lis.append(teacher)
    lis.append(team_string)
    lis.append(number)
    lis.append(time)
    lis.append(jianjie_string)

    data.append(lis)
df = pd.DataFrame(data=data, columns=['course','school','teacher','team','number','time','jianjie'])
print(df)
engine = create_engine("mysql+mysqlconnector://root:@127.0.0.1:3306/selenium")
df.to_sql('mooc',engine,if_exists="replace")

·结果展示

作业心得

一开始做时没有成功登录mook,在同学帮助下成功实现

作业3

·要求:
·掌握大数据相关服务,熟悉Xshell的使用
·完成文档 华为云_大数据实时分析处理实验手册-Flume日志采集实验(部分)v2.docx 中的任务,即为下面5个任务,具体操作见文档。
·环境搭建:开通MapReduce服务
·实时分析开发实战:
·任务一:Python脚本生成测试数据 ·任务二:配置Kafka ·任务三: 安装Flume客户端 ·任务四:配置Flume采集数据
·输出:实验关键步骤或结果截图。

过程与结果展示

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

·任务二:配置Kafka

·任务三: 安装Flume客户端


·任务四:配置Flume采集数据

作业心得

华为云很强大很好用,有了初步认识

标签:text,selenium,实践,采集,import,div,数据,find,browser
From: https://www.cnblogs.com/sunshine358/p/17835069.html

相关文章

  • 成功实现FaceTime语音,FaceTime视频,FaceTime数据筛选,检测手机号是否开通FaceTime的
    FaceTime是苹果公司iOS和macOS(以前称MacOSX或OSX)内置的一款视频通话软件,通过Wi-Fi或者蜂窝数据接入互联网,在两个装有FaceTime的设备之间实现视频通话。其要求通话双方均具有装有FaceTime的苹果设备,苹果ID以及可接入互联网的3G/4G/5G或者Wi-Fi网络。 一、Windows电脑上部署......
  • symbol对象不能用于数据运算,包括+、-、*、/
    执行以下程序,会抛出语法错误的式子是()vars=Symbol('key');...①console.log(s+'123');...②varobj={[s]:function(){console.log(1);}...③}varb=Reflect.ownKeys(obj);...④A①B②C③D④正确答案:BSymbol是不完整的构造函数,创建symbol对象时不......
  • ETL数据转换工具类型与适用场景
    ETL数据转换工具在企业数据管理中扮演着重要的角色,能够帮助企业从多个数据源中提取、转换和加载数据,实现数据整合和分析。以下是针对Kettle、DataX和ETLCloud这几个工具的详细介绍及其适用场景。Kettle(Pentaho Data Integration):Kettle是一款国外开源的ETL工具,纯java编写,可以在Win......
  • 基于Python的热门旅游景点数据分析系统的设计与实现-计算机毕业设计源码+LW文档
    开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:PyCharm浏览器:谷歌浏览器DROPTABLEIFEXISTS08375_menpiaoxinxi;/*!40101SET@saved_cs_client=@@character_set_client/;/!40101SETcharacter_set_cl......
  • Mysql数据库查询之模糊查询
    一、什么是模糊查询模糊查询是根据一定的模式匹配规则,查找与指定条件相似或相符的数据。二、模糊查询实操通配符查询1、%表示任意0个或多个字符形式一:select查询字段from表名where字段like’%’代码演示查询结果 形式二:select查询字段from表名where字段like......
  • 高斯数据库HCNA之数据库开发环境
    一、GaussDB数据库驱动驱动概念介绍数据库驱动是应用程序和数据库存储之间的一种接口,数据库厂商为了某一种开发语言环境(比如Java、C)能够实现数据库调用而开发的类似翻译员功能的程序,将复杂的数据库操作与通信抽象成为了当前开发语言的访问接口,因此,为了满足用户需求,GaussDB100同......
  • 2023全球智能汽车AI挑战赛——赛道二:智能驾驶汽车虚拟仿真视频数据理解赛道
    赛题:智能驾驶汽车虚拟仿真视频数据理解赛道任务:输入:元宇宙仿真平台生成的前视摄像头虚拟视频数据(8-10秒左右);输出:对视频中的信息进行综合理解,以指定的json文件格式,按照数据说明中的关键词(key)填充描述型的文本信息(value,中文/英文均可以)初赛提交格式:{"author":"abc","time":"YY......
  • 论文精读:用于少样本目标检测的元调整损失函数和数据增强(Meta-tuning Loss Functions a
    论文链接:Meta-TuningLossFunctionsandDataAugmentationforFew-ShotObjectDetectionAbstract现阶段的少样本学习技术可以分为两类:基于微调(fine-tuning)方法和基于元学习(meta-learning)方法。基于元学习的方法旨在学习专用的元模型,使用学到的先验知识处理新的类,而基于微......
  • SQL server 恢复数据库
    1、查找已置疑的数据库文件存放位置;2、将SQL数据库停止;3、将置疑的数据库的数据文件RongShiYKT.mdf、RongShiYKT_Log.Ldf文件拷贝到其他目录备份;4、重启SQL数据库,将置疑的数据分离5、重建一个与置疑数据库同名称的新数据库RongShiYKT;6、停止SQL服务器,将备份的旧数据文件RongS......
  • WorkPlus Meet视频会议系统,可私有化部署,保障内部数据安全
    WorkPlusMeet作为一款私有化音视频会议平台,具有高度安全性和部署灵活性,能够根据参会人数进行灵活的调配,这样企业可以有效控制会议成本,避免资源浪费。同时,WorkPlusMeet平台支持多种功能,满足不同场景下的视频会议需求。其中包括屏幕共享功能,可以让与会人员方便地分享自己的屏幕内容......