爬取编程常用词汇,保存为Excel
程序员文章站
2023-10-29 09:53:40
编程常用词汇 控制台打印 Excel内容 ......
编程常用词汇
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,设置边宽,全选居中