2012-05-01 11 views
1

私はURLで作業中です&特定のリンクを取得したいです。
が存在しますが、テーブルが多数あります。
lxmlを使用して1行または2行のコード内でどのように処理できますか?私は
表2.1金利のために優れてダウンロードしたいlxmlを使用してURLを取得するためのcssselectの使用

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

:銀行機関

私はテーブルとTDSとhtmlに存在するTRSの数があるときに動作する方法を理解しません。

答えて

1

まず最初に、そのリンクまたはそのテーブル行に一意の識別子がないため、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 
関連する問題