我正在处理一个 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 时,我不明白如何工作。
好吧,首先,该链接或该表行没有唯一标识符,因此无法获取它,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