編程常用詞匯
import requests
import openpyxl
from lxml import etree
import re
url = 'https://www.runoob.com/w3cnote/common-english-terminology-in-programming.html'
# 得到響應結果
res = requests.get(url)
# xpath取值
selector = etree.HTML(res.text)
# 字母的索引
word_letter = selector.xpath('//h2/text()')
# 刪除列表里前兩個多余的值
del word_letter[0:2]
# print(word_letter)
# word_letter 最后的值為
# ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '專業名詞']
# 得到每個索引的table,每個table里包含各索引的所有單詞
result = selector.xpath('//table')
# 刪除多余的數據
result.pop(0)
# 創建workbook
wb = openpyxl.Workbook()
# 創建worksheet
ws = wb.active
# 利用下標取出詞匯的索引
index = -1
for table in result:
# 一開始就進行計數,即從0開始
index += 1
# 先添加索引,再取出每個table里的所有單詞
ws.append([word_letter[index]])
# 打印索引
print(word_letter[index])
# X索引里沒有單詞
if word_letter[index] == 'X':
# 每個字母索引之間空一行
ws.append([])
# 繼續循環對后面table里的單詞進行添加
continue
# 添加一行Excel數據
ws.append(['英文', '譯法 1', '譯法 2', '譯法 3'])
# 將Element類型顯示為字符,為byte類型,需要decode
# 中文不顯示,需要設置 encoding='utf-8'
words_html = etree.tostring(table, encoding='utf-8').decode()
# 一個tr:單詞和譯法
# 利用正則得到一個table里所有tr的內容
word_html = re.findall('<tr>.*?</tr>', words_html, re.S)
# 刪除帶<strong>標簽的'英文 譯法1 譯法2 譯法3'這條數據
# 前面已經手動添加,后面不需要每條都去判斷去除<strong>標簽
word_html.pop(0)
for tr in word_html:
# 一個td:一個單詞或一個譯法
# 利用正則得到一個tr里所有td的內容
# 得到的為list,一個td_list里面包含一個單詞和對應的譯文(含空格)
td_list = re.findall('<td>(.*?)</td>', tr, re.S)
# 用新的列表接收去除空格后的單詞和譯文
word = []
for i in td_list:
# 去除每個td里包含的空格,添加為一個列表
word.append(i.strip())
# 打印單詞
print(word)
# 一個word包含一個單詞和對應的譯文(不含空格)
# 將這個單詞添加進Excel
ws.append(word)
# 每個字母索引之間空一行
ws.append([])
# 保存Excel
path = r'C:\Users\Hlzy\Desktop\編程常用詞匯.xlsx'
wb.save(path)
# 沒有設置單元格樣式,可以直接打開Excel,設置邊寬,全選居中
控制台打印
Excel內容