資料採集與融合技術作業四
總倉庫連結
作業1:
要求:
熟練掌握 Selenium 查詢HTML元素、爬取Ajax網頁資料、等待HTML元素等內容。
使用Selenium框架+ MySQL資料庫儲存技術路線爬取“滬深A股”、“上證A股”、“深證A股”3個板塊的股票資料資訊。
程式碼和結果
資料儲存:
def store_data(self, data):
sql = """
INSERT INTO stockinfo (bStockNo, bStockName, bLastPrice, bPriceChange, bPriceChangeAmount, bVolume, bTurnover, bAmplitude, bHigh, bLow, bOpen, bPrevClose)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
"""
try:
self.cursor.execute(sql, data)
self.db.commit()
except mysql.connector.Error as err:
print("Error inserting data into MySQL:", err)
資料抓取與處理:
def processspider(self):
self.connect_to_database()
trs = WebDriverWait(self.driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, "//table[@id='table_wrapper-table']/tbody/tr"))
)
for tr in trs:
# Extract data from each row
data = (
tr.find_element(By.XPATH, "./td[position()=2]/a").text,
tr.find_element(By.XPATH, "./td[position()=3]/a").text,
tr.find_element(By.XPATH, "./td[position()=5]/span").text,
tr.find_element(By.XPATH, "./td[position()=6]/span").text,
tr.find_element(By.XPATH, "./td[position()=7]/span").text,
tr.find_element(By.XPATH, "./td[position()=8]").text,
tr.find_element(By.XPATH, "./td[position()=9]").text,
tr.find_element(By.XPATH, "./td[position()=10]").text,
tr.find_element(By.XPATH, "./td[position()=11]/span").text,
tr.find_element(By.XPATH, "./td[position()=12]/span").text,
tr.find_element(By.XPATH, "./td[position()=13]/span").text,
tr.find_element(By.XPATH, "./td[position()=14]").text
)
self.store_data(data)
執行結果:
心得體會:
加深了我對XPath的理解,能夠更靈活地運用它,無論是在Selenium還是其他框架中。透過將抓取到的資料儲存到資料庫,我對資料庫的操作也更加熟練了。從連線資料庫、執行SQL語句到資料的增刪改查
作業2
熟練掌握 Selenium 查詢HTML元素、實現使用者模擬登入、爬取Ajax網頁資料、等待HTML元素等內容。
使用Selenium框架+MySQL爬取中國mooc網課程資源資訊(課程號、課程名稱、學校名稱、主講教師、團隊成員、參加人數、課程進度、課程簡介)
程式碼和結果
思路:
執行結果:
心得體會:
作業3:
要求:爬取中國大學2021主榜(https://www.shanghairanking.cn/rankings/bcur/2021)所有院校資訊,並儲存在資料庫中,同時將瀏覽器F12除錯分析的過程錄製Gif加入至部落格中。
程式碼和結果
執行結果