我正在使用 Python 和 lxml 从 Bloomberg 网站上抓取有关 ETF 和共同基金的数据。我试图从中抓取数据的页面示例是http://www.bloomberg.com/markets/funds/country/usa/。
对于每个基金,我都需要代码、名称、基金类型和目标。我在抓取符号、名称或基金类型时没有问题。但是,我很难实现目标。您会在我引用的网页(以及后续页面)上看到目标是空白的。页面上最后一只基金的 HTML 如下所示:
<tr class='tkr_alt'>
<td class="name">
<a href="/quote/ADTKEX:US"><span>Advisor Disciplined Trust 193 - Taxable Municipal Bond Portfolio - Series 1</span> (ADTKEX)</a></td>
<td class="symbol">ADTKEX:US</td>
<td>UIT</td>
<td></td>
</tr>
第一栏是基金名称,第二栏是股票代码,第三栏是基金类型(ETF、UIT、开放式基金、封闭式基金等),第四栏是目标(增长、价值、收入等)。对于这个特定的基金,目标缺失。
我用来提取基金目标的代码(最后一列)是:
result = urllib.urlopen(filename)
element_html = result.read()
doc = lxml.html.document_fromstring (element_html)
list_obj = doc.xpath (u'.//tr[td[contains (@*, "name")]]/following-sibling::td/text()')
此代码将基金目标复制到一个数组中。不幸的是,代码完全忽略了条目丢失的事实。因此,名称、代码和基金类型的列表将各有 X 个元素,但目标列表将只有 X-1 个元素。
如何让脚本识别空白条目并提供 nil 或 '' 的数组元素?
有没有办法可以捕获整个列条目(看起来像“blahblahblah”)?我愿意处理这些不需要的标签,因为它们很容易删除。