まず最初に、そのリンクまたはそのテーブル行に一意の識別子がないため、cssselect
でフェッチできず、URLのどの部分が既にわかっていなければフェッチできません。タイトルはなるだろう。
セクション番号2.1
と一致するとします。ページを見ると、セクション番号は常に行の最初のセルにあります。正しいセルが見つかると、そのリンクを含む2番目の兄弟に移動し、リンクから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