1

我正在处理一个 url,我想获取特定的链接。
但是有很多桌子。
如何使用 lxml 在一行或两行代码中处理它?

url = 'http://www.bnm.gov.my/index.php?ch=109&pg=294&mth=3&yr=2012&eId=box1'

我要下载
表格 2.1 利率的 excel:银行机构

当 html 中存在大量表格以及 tds 和 trs 时,我不明白如何工作。

4

1 回答 1

1

好吧,首先,该链接或该表行没有唯一标识符,因此无法获取它,cssselect并且您将无法获取它,而无需知道 URL 或标题的哪一部分将是.

假设您要匹配 section number 2.1。查看页面,节号总是在一行的第一个单元格中。一旦找到正确的单元格,就可以遍历它的第二个同级单元格,该单元格应该包含链接,然后从链接中获取 URL。

>>> import urllib2
>>> from StringIO import StringIO
>>> from lxml import etree
>>> url = "http://www.bnm.gov.my/index.php?ch=109&pg=294&mth=3&yr=2012&eId=box1"
>>> ufile = urllib2.urlopen(url)
>>> root = etree.parse(ufile, etree.HTMLParser())
>>> for e in root.getiterator('tr'):
...     fc = e[0]       # first child
...     if fc.tag == 'td' and fc.text == '2.1':
...         link = fc.getnext().getnext()[0]  # first child of 2nd sibling
...         print link.attrib["href"]
...
files/publication/msb/2012/3/xls/2.1.xls
于 2012-05-01T07:34:27.273 回答