??作業①
??(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) 輸出
已完成過實驗三

浙公網安備 33010602011771號