🎇作业①

🚀(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)代码实现及图片

主要代码

# 核心在于start_spider函数,它实现了网页数据爬取与数据库插入操作

def start_spider(url, stockdb):
    browser.get(url)

    markets = ['hs', 'sh', 'sz']
    for i in markets:
        WebDriverWait(browser, 1000).until(
            EC.presence_of_all_elements_located(
                (By.ID, "table_wrapper-table")
            )
        )
        time.sleep(random.randint(3, 6))
        browser.execute_script('document.documentElement.scrollTop=0')

        for link in browser.find_elements(By.XPATH, '//tbody/tr'):
            # 提取各种股票数据字段
            id_stock = link.find_element(By.XPATH, './td[position()=2]').text
            name = link.find_element(By.XPATH, './/td[@class="mywidth"]').text
            new_price = link.find_element(By.XPATH, './/td[@class="mywidth2"]').text
            # 此处省略其他数据提取代码行

            stockdb.insert(count, id_stock, name, new_price, ud_range, str(ud_num), deal_count, turnover, amplitude, high, low, today, yesterday)

        item = browser.find_element(By.XPATH, f'//li[@id="nav_{i}_a_board"]')
        item.click()

输出结果



🧾(3)心得体会

通过这次作业,我深刻体会到了运用 Selenium 进行网页数据爬取的强大之处,它能很好地处理动态网页如爬取东方财富网股票数据。但过程也并非一帆风顺,比如等待 HTML 元素出现的设置需要精准把握,不然可能获取不到完整数据。在与 MySQL 数据库结合存储数据时,要注意数据类型匹配和插入异常处理。这次作业让我更熟练掌握了相关技术,也明白了实践中细节处理的重要性,收获颇丰。

🎊作业②

🕸️(1)作业要求

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

🎄(2)代码实现及图片

主要代码

#数据库操作相关:
class moocDB:
    def openDB(self):
        self.con = sqlite3.connect("mooc.db")
        self.cursor = self.con.cursor()
        try:
            self.cursor.execute("create table mooc (Num varchar(16), Name varchar(16),School varchar(16),Teacher varchar(16),Team varchar(16),Person varchar(16),Jindu varchar(16),Jianjie varchar(16))")
        except:
            self.cursor.execute("delete from mooc")

    def closeDB(self):
        self.con.commit()
    def insert(self,count, name, school, teacher, team, person, jindu, jianjie):
        try:
            self.cursor.execute("insert into mooc(Num,Name,School,Teacher,Team,Person,Jindu,Jianjie) values (?,?,?,?,?,?,?,?)",
                                (count, name, school, teacher, team, person, jindu, jianjie))
        except Exception as err:
            print(err)


#数据爬取及插入数据库部分:
def start_spider(moocdb):
    browser.get(url)
    count = 0
    for i in range(2):
        WebDriverWait(browser, 1000).until(
            EC.presence_of_all_elements_located(
                (By.ID, "j-courseCardListBox")
            )
        )
        time.sleep(random.randint(3, 6))
        browser.execute_script('document.documentElement.scrollTop=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
            # 一系列获取各字段信息并处理异常的代码
            moocdb.insert(count, name, school, teacher, team, person, jindu, jianjie)
        next()
    login()

输出结果



🔮(3)心得体会

通过这次作业,我深刻体会到了网络爬虫结合数据库操作的复杂性与实用性。在使用 Selenium 过程中,精准定位 HTML 元素是关键,稍有偏差就可能导致获取不到正确数据,这让我更加注重对页面结构的分析。同时,处理 Ajax 网页数据时要考虑到数据的异步加载,合理运用等待机制很重要。而与 MySQL(这里用的 sqlite3 类似)结合存储数据,让我明白了数据持久化管理的流程,能将爬取到的信息有序保存起来以便后续分析使用,整体提升了我的编程实践能力和对数据处理流程的理解。

🪸作业③

🐻‍❄️(1)作业要求

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

🔒(2) 输出

 已完成过实验三
posted on 2024-11-12 16:00  pandas2  阅读(11)  评论(0编辑  收藏  举报