我正在处理一个网址&我想获取特定的链接。
但是有很多桌子
如何使用lxml在一行或两行代码中处理它?</ p>
url = 'http://www.bnm.gov.my/index.php?ch=109&pg=294&mth=3&yr=2012&eId=box1'
我想下载excel for
表2.1利率:银行机构
当html中存在多个表格和tds和trs时,我不明白如何工作。
答案 0 :(得分:1)
嗯,首先,该链接或该表行没有唯一标识符,因此无法使用cssselect
获取它,并且您无法在不知道它的哪一部分的情况下获取它URL或标题将是。
假设您要匹配部分编号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