本篇文章主要目的是從指定的網頁中提取學年度和論文名稱資訊,來學習爬蟲的技術。學習如何使用requests和BeautifulSoup模組來發送HTTP請求並解析HTML內容,然後從表格中提取所需的資料。這可以讓使用者從網頁中獲取特定資訊,如學年度和論文名稱等資訊,並將其用於後續處理或顯示。
學習爬蟲技術以及使用requests和BeautifulSoup模組來獲取網頁資訊的步驟如下:- 使用requests模組發送HTTP請求到指定的網址。
- 設定編碼方式,確保正確解讀網頁內容。
- 使用BeautifulSoup模組解析HTML內容,建立解析樹。
- 使用find和find_all方法尋找特定的HTML元素或屬性。
- 從表格中獲取所需的資料,例如學年度和論文名稱。
- 將資料進行後續處理或顯示。
範例一:提取學年度和論文名稱資訊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import requests from bs4 import BeautifulSoup url = "https://nkve.nkut.edu.tw/front/per/writing_journal/journal.php?ID=bmt1dF9tZSZ3cml0aW5nX2pvdXJuYWw=" re = requests.get(url) re.encoding = 'utf8' soup = BeautifulSoup(re.text, 'html.parser') print(soup.title.string) # Find the table body tbody = soup.find('tbody') # Iterate over table rows for row in tbody.find_all('tr'): # Get the columns columns = row.find_all('td') if len(columns) == 2: year = columns[0].text.strip() title = columns[1].find('a').text.strip() print(f"學年度: {year}") print(f"論文名稱: {title}") print("------------") |
執行結果:
南開科技大學 車輛工程系(車輛與機電產業碩士班) - 期刊論文
學年度: 110
論文名稱: F M Chen, C K Chao, C C Chiu, N A Noda,Stress intensity factors for cusp-type crack problem under mechanical and thermal loading,Journal of Mechanics,37, pp327~332(SCI)
------------
學年度: 110
論文名稱: 蔡政龍著作 吳宗霖校稿,如何避免買到「泡水&重大事故」之中古車,消費者報導雜誌,2021/02, pp17~23
------------
學年度: 110
論文名稱: 蔡政龍、陳泱澤、羅希哲,高職生汽機車節油素養調查之研究,2018第十四屆科技教育研究與發展學術研討會(論文集),14, pp521~539(其他)
------------
學年度: 109
論文名稱: S. C. Tseng, C. K. Chao, F. M. Chen,Interfacial Stresses of a Coated Square Hole Induced
by a Remote Uniform Heat Flow,International Journal of Applied Mechanics,12(SCI)
------------
學年度: 109
論文名稱: S. C. Tseng , C. K. Chao , F. M. Chen ,W. C. Chiu,Interfacial stresses of a coated polygonal hole
subject to a point heat source,Journal of Thermal Stresses(SCI)
------------
學年度: 109
論文名稱: 蔡政龍著作 吳宗霖校稿,入手中古車必備觀念,消費者報導雜誌,2020/10, pp28~31(其他)
------------
學年度: 108
論文名稱: S. C. Tseng, C. K. Chao, F. M. Chen,Stress field for a coated triangle –like hole problem in plane elasticity,Journal of Mechanics(SCI)
------------
學年度: 107
論文名稱: C. K. Chao, S. C. Tseng, F. M. Chen,Analytical solutions to a coated triangle hole embedded in an infinite plate under a remote uniform heat flow,Journal of Thermal Stresses(SCI)
------------
學年度: 107
論文名稱: C. K. Chao, S.C. Tseng, F.M. Chen,Mode-III stress intensity factors for two circular
inclusions subject to a remote uniform shear load,Journal of the Chinese Institute of Engineers,41, pp590~602(SCI)
------------
學年度: 106
論文名稱: C.K.Chao,F.M.Chen,T.H.Lin,Stress intensity factors for fibrous composite with a crack embedded in an infinite matrix under a remote uniform load,Engineering Fracture Mechanics,179, pp294~313(SCI)
------------
範例二:研討會論文
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import requests from bs4 import BeautifulSoup url = "https://nkve.nkut.edu.tw/front/per/writing_seminar/seminar.php?ID=bmt1dF9tZSZ3cml0aW5nX3NlbWluYXI=" re = requests.get(url) re.encoding = 'utf8' soup = BeautifulSoup(re.text, 'html.parser') print(soup.title.string) # Find the table body tbody = soup.find('tbody') # Iterate over table rows for row in tbody.find_all('tr'): # Get the columns columns = row.find_all('td') if len(columns) == 2: year = columns[0].text.strip() title = columns[1].find('a').text.strip() print(f"學年度: {year}") print(f"論文名稱: {title}") print("------------") |
執行結果:
南開科技大學 車輛工程系(車輛與機電產業碩士班) - 研討會論文
學年度: 110
論文名稱: 蔡政龍、張慧穎,2016第十二屆科技教育研究與發展學術研討會,2016-00-00, pp2016-00-00
------------
學年度: 108
論文名稱: Kuang-Yi Lee, Yuan-Min Chu, Chun-Chung Chen, Cheng-Lung Tsai, Shi-Jer Lou,,2019-00-00, pp2019-00-00(其他)
------------
學年度: 108
論文名稱: ,0000-00-00, pp0000-00-00
------------
學年度: 108
論文名稱: ,0000-00-00, pp0000-00-00
------------
學年度: 107
論文名稱: 蔡政龍、陳泱澤、羅希哲,2018第十四屆科技教育研究與發展學術研討會,2018-00-00, pp2018-00-00(其他)
------------
學年度: 107
論文名稱: ,0000-00-00, pp0000-00-00
------------
學年度: 107
論文名稱: ,0000-00-00, pp0000-00-00
------------
學年度: 107
論文名稱: The 2nd International Symposium on Advanced Material Research (2nd ISAMR2018), March 16-18, 2018.,0000-00-00, pp0000-00-00
------------
學年度: 107
論文名稱: The 19th CIRP Conference on Electro Physical and Chemical Machining (ISEM 19), Apr. 23-27, 2018,0000-00-00, pp0000-00-00
------------
學年度: 107
論文名稱: The 19th CIRP Conference on Electro Physical and Chemical Machining (ISEM 19), Apr. 23-27, 2018,0000-00-00, pp0000-00-00
------------
範例三:專利
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import requests from bs4 import BeautifulSoup url = "https://nkve.nkut.edu.tw/front/per/patent/patent.php?ID=bmt1dF9tZSZwYXRlbnQ=" re = requests.get(url) re.encoding = 'utf8' soup = BeautifulSoup(re.text, 'html.parser') print(soup.title.string) # Find the table body tbody = soup.find('tbody') # Iterate over table rows for row in tbody.find_all('tr'): columns = row.find_all('td') if len(columns) == 5: year = columns[0].text.strip() patent_title = columns[2].find('a').text.strip() print(f"年度: {year}") print(f"專利名稱: {patent_title}") print("------------") |
執行結果:
南開科技大學 車輛工程系(車輛與機電產業碩士班) - 專利
年度: 3931
專利名稱: 輔助身障人士搭乘大眾交通工具的系統及其方法
------------
年度: 3931
專利名稱: 偵測腳踏車位置以通知伺服器之系統及方法
------------
年度: 3931
專利名稱: 網球發球訓練系統及其方法
------------
年度: 3931
專利名稱: 智能化課表生成以控制空調的系統
------------
年度: 3930
專利名稱: 具太陽能儲存功能遮陽板
------------
年度: 3930
專利名稱: 磁力研磨之彈性磨料及其製備方法
------------
年度: 3930
專利名稱: 智慧釣魚系統及其方法
------------
年度: 3930
專利名稱: 智能頭皮檢測系統及其方法
------------
年度: 3930
專利名稱: 電動車輛的電池更換站查詢系統及其方法
------------
年度: 3930
專利名稱: 交通管制系統及其方法
------------
沒有留言:
張貼留言