天天看点

python 使用lxml的etree快速解析网页表格

发现使用lxml的etree解析网页的表格特别方便,看了一些教程,讲得不是很清楚,特此贴上自己使用成功的代码,作为参考。

import requests
import re
import pandas as pd
from lxml import etree

# url和header此处省略
req = requests.get(url=url, headers=header)
text = req.text
# 解析html
res_elements = etree.HTML(text)
# 指定属性的获取方式
# table = res_elements.xpath('//table[@id="table"]')
# 不指定属性获取table
table = res_elements.xpath('//table')
# 将第一个表格转成string格式
table = etree.tostring(table[0], encoding='utf-8').decode()
# pandas读取table
df = pd.read_html(table, encoding='utf-8', header=0)[0]
# 转换成列表嵌套字典的格式
results = list(df.T.to_dict().values())
# 最后能够看到一个包含很多字典的list
print(results)