2023年7月14日 星期五

Python網路爬文收集教師發表期刊論文、研討會論文、專利(ChatGPT版本)

本篇文章主要目的是從指定的網頁中提取學年度和論文名稱資訊,來學習爬蟲的技術。學習如何使用requests和BeautifulSoup模組來發送HTTP請求並解析HTML內容,然後從表格中提取所需的資料。這可以讓使用者從網頁中獲取特定資訊,如學年度和論文名稱等資訊,並將其用於後續處理或顯示。

學習爬蟲技術以及使用requests和BeautifulSoup模組來獲取網頁資訊的步驟如下:
  1. 使用requests模組發送HTTP請求到指定的網址。
  2. 設定編碼方式,確保正確解讀網頁內容。
  3. 使用BeautifulSoup模組解析HTML內容,建立解析樹。
  4. 使用find和find_all方法尋找特定的HTML元素或屬性。
  5. 從表格中獲取所需的資料,例如學年度和論文名稱。
  6. 將資料進行後續處理或顯示。

範例一:提取學年度和論文名稱資訊

 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
專利名稱: 交通管制系統及其方法
------------

沒有留言:

張貼留言