python爬取网页文本_Python爬取网页内容的所有关键词并保存至Excel

码农公社 210.net.cn 210是何含义?10月24日是程序员节,1024 =210、210既

210

之意。

Python爬取网页内容的所有关键词并保存至Excel,话不多叙,直接上代码。

本文爬取了www_runoob_com某页面展示的全部关键词。

import requests

import openpyxlfrom 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('

', words_html, re.S)

# 删除带标签的'英文 译法1 译法2 译法3'这条数据

# 前面已经手动添加,后面不需要每条都去判断去除标签

word_html.pop(0)

for tr in word_html:

# 一个td:一个单词或一个译法

# 利用正则得到一个tr里所有td的内容

# 得到的为list,一个td_list里面包含一个单词和对应的译文(含空格)

td_list = re.findall('

(.*?)', 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,设置边宽,全选居中

控制台打印

1586047719862356.jpg

Excel内容

1586047753745224.jpg

转自https://www.cnblogs.com/jiyu-hlzy/p/11987836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值