本篇博客给大家带来一个国内作者开发的第三方【小】库 – txdpy ,使用这个库是无意中发现了一个函数 webptablesl()
,它可以传入一个 url 地址,然后把带合并单元格的表格给解析出来,非常有趣。
txdpy 库介绍
什么是 txdpy 库
txdpy
库里面集成了一些方法,由于官方手册不完整,可以在 __init__
文件中查看到如下方法。
['urljoin','headers_dict','PyMySQL','PyBloomFilter','rl','si','liduel','param_dict',
'is_num','is_Sletter','is_Bletter','is_letter','is_num_letter','is_chinese',
'get_chinese','get_letter','get_Bletter','get_Sletter','get_num','get_middle',
'get_num_letter','webptablesl','req','dow_file','list_dupl','uc_easy','get_ssq',
'excel_into_mysql']
从这些函数里面可以看到一些有趣的内容,例如 is_num()
,判断是否为数字,get_chinese()
获取中文,
uc_easy
这个竟然是操作 selenium 的,实在没想到,,ԾㅂԾ,。
txdpy 库的安装和使用
安装命令如下所示:
pip install txdpy
使用也非常简单,直接导入,然后判断一个字符串是否为纯数字字符串。
import txdpy as tx
from loguru import logger
common_str = '134dhsh1239aasdd@Python 梦想橡皮擦'
def is_num():
"""
It returns True if the input is a number, and False otherwise
"""
logger.info('上述字符串是纯数字字符串吗?:{0}'.format(tx.is_num(common_str)))
is_num()
代码运行结果如下。
如果在使用过程中出现如下错误,请按照后文内容进行处理。
SyntaxError: future feature annotations is not defined
语法错误,python 版本太低造成的,升级 Python 到 3.8 以上试试。
运行结果如下所示。
除此之外,还可以直接使用该库提取中文。
def get_chinese():
"""
It returns the string "Chinese"
"""
logger.info('提取到字符串的中文是:{0}'.format(tx.get_chinese(common_str)))
get_chinese()
txdpy 库快速采集表格,而且表格有拆分情况
webptablesl 方法快速提取表格
首先看一下目标站点:https://zsb.tiangong.edu.cn/2022/0908/c197a79164/page.htm
在该站点中,存在一个包含合并单元格的表。
我们需要快速将其提取出来。
import requests
from txdpy import webptablesl
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
}
res = requests.get('https://zsb.tiangong.edu.cn/2022/0908/c197a79164/page.htm', headers=headers, verify=False)
res.encoding = res.apparent_encoding
res = res.text
xpath = '//table'
trs = (webptablesl(res, xpath))
for tr in trs:
print(tr)
运行代码之后,会发现直接将表格中的数据进行了提取。
而且你会发现 txdpy
已经将合并的单元格进行了展开,我们对比一下采集结果和网页表格,发现完全正确,使用 webptablesl()
函数之后,大幅度降低了我们的代码量。
库不大,使用起来也不费力,还能满足要求,非常好的一款国产小库,推荐一下。
开源地址如下:
https://gitee.com/tang-xudong666/txdpy/tree/master
📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 878 篇原创博客
👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇