gpt4 book ai didi

python - 解析 HTML 表格的最快、最简单和最好的方法?

转载 作者:太空狗 更新时间:2023-10-29 20:24:41 26 4
gpt4 key购买 nike

我正在尝试获取此表 http://www.datamystic.com/timezone/time_zones.html成数组格式,这样我就可以用它做任何我想做的事。最好使用 PHP、Python 或 JavaScript。

这种问题经常出现,因此我没有寻求解决这个特定问题的帮助,而是寻找有关如何解决所有类似问题的想法。

首先想到的是 BeautifulSoup。另一种可能性是将其复制/粘贴到 TextMate 中,然后运行正则表达式。

你有什么建议?

这是我最终编写的脚本,但正如我所说,我正在寻找更通用的解决方案。

from BeautifulSoup import BeautifulSoup
import urllib2


url = 'http://www.datamystic.com/timezone/time_zones.html';
response = urllib2.urlopen(url)
html = response.read()
soup = BeautifulSoup(html)
tables = soup.findAll("table")
table = tables[1]
rows = table.findAll("tr")
for row in rows:
tds = row.findAll('td')
if(len(tds)==4):
countrycode = tds[1].string
timezone = tds[2].string
if(type(countrycode) is not type(None) and type(timezone) is not type(None)):
print "\'%s\' => \'%s\'," % (countrycode.strip(), timezone.strip())

也欢迎对我的 python 代码提出意见和建议;)

最佳答案

对于您的一般问题:尝试 lxml.html来自 lxml包(将其视为类固醇上的标准库 xml.etree:相同的 xml api,但具有 html 支持、xpath、xslt 等...)

针对您的具体情况的快速示例:

from lxml import html

tree = html.parse('http://www.datamystic.com/timezone/time_zones.html')
table = tree.findall('//table')[1]
data = [
[td.text_content().strip() for td in row.findall('td')]
for row in table.findall('tr')
]

这将为您提供一个嵌套列表:每个子列表对应于表格中的一行并包含来自单元格的数据。偷偷插入的广告行还没有被过滤掉,但它应该会让你上路。 (顺便说一句:lxml 很快!)

但是:更具体地针对您的特定用例:有更好的方法可以到达 timezone database信息而不是抓取该特定网页(另外:请注意,该网页实际上提到您不得复制其内容)。甚至现有的图书馆已经在使用这些信息,例如参见 python-dateutil .

关于python - 解析 HTML 表格的最快、最简单和最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com