🎇作业①
🚀(1)作业要求
-
要求:熟练掌握 Selenium 查找 HTML 元素、爬取 Ajax 网页数据、等待 HTML 元素等内
容。
使用 Selenium 框架+ MySQL 数据库存储技术路线爬取“沪深 A 股”、“上证 A 股”、
“深证 A 股”3 个板块的股票数据信息。 -
候选网站:东方财富网:
http://quote.eastmoney.com/center/gridlist.html#hs_a_board -
输出信息:MYSQL 数据库存储和输出格式如下,表头应是英文命名例如:序号
id,股票代码:bStockNo……,由同学们自行定义设计表头:
✒️
(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) 输出
已完成过实验三