我正在寻找使用 Python 和 xml.dom.minidom 来获取<table>
由表 id 指定的特定链接列表。基于一些优秀的建议,我正在尝试使用 DOM 而不是模式匹配。
import urllib
import xml.dom.minidom
url = 'http://www.batstrading.com/market_data/shortsales'
page = xml.dom.minidom.parse(urllib.urlopen(url))
我可以通过标签名称获取所有链接page.getElementsByTagName('a')
,但我不能限制仅包含在 ID 为“monthly-short-sale”的表中的链接返回的链接。使用getElementById
返回无。
这是因为 DTD 中没有定义“monthly-short-sale”ID 吗?如果是这样,提取此信息的最佳方法是什么?
这是我目前正在使用的代码,它有效,但对上帝犯了罪:
import urllib
import xml.dom.minidom
import datetime
url = 'http://www.batstrading.com/market_data/shortsales'
def getDownloadLink(alink, prefix = 'BATSsh'):
"""return (datetime.date, link) for the provided link if the link
target starts with the data file prefix"""
n = len(prefix)
href = alink.getAttribute('href')
if href.startswith(prefix) and (len(href) == 25):
year = int(href[n:n+4])
month = int(href[n+4:n+6])
day = int(href[n+6:n+8])
date = datetime.date(year, month, day)
return (date, url + '/' + href)
page = xml.dom.minidom.parse(urllib.urlopen(url))
link = (getDownloadLink(a) for a in page.getElementsByTagName('a'))
link = dict(i for i in link if i is not None)