2012-05-01 15 views
0

私のHTML:このHTMLテーブルをBeautifulSoupとRegexで解析するには?

  <table cellspacing="0" cellpadding="2" rules="all" border="1" id="branchTable" width="100%"> 
      <tr class="TitleTable"> 
       <th scope="col" width="250"><b>Branch Name</b></th><th scope="col" width="35%"><b>Branch Date</b></th><th scope="col" width="35%"><b>Branch Origin</b></th> 
      </tr><tr class="RowSet"> 
       <td><a class="blue" href="javascript: OpenWindow(&#39;/home/data/files/fetchRecord.php?fileID=342&#39;)">SFO Branch</a></td><td class="red">03/16/2012</td><td class="red">&nbsp;</td> 
      </tr><tr class="RowSet"> 
       <td><a class="blue" href="javascript: OpenWindow(&#39;/home/data/files/fetchRecord.php?fileID=884&#39;)">LAX Branch</a></td><td class="red">03/16/2012</td><td class="red">06/16/1985</td> 
      </tr><tr class="RowSet"> 
       <td><a class="blue" href="javascript: OpenWindow(&#39;/home/data/files/fetchRecord.php?fileID=83&#39;)">DC Branch</a></td><td class="red">03/16/2012</td><td class="red">&nbsp;</td> 
      </tr> 
      </table> 

マイコードこれまで:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(pageSource) 
table = soup.find("table", id = "branchTable") 
rows = table.findAll("tr", {"class":"RowSet"}) 

data = [[td.findChildren(text=True) for td in tr.findAll("td")] for tr in rows] 
print data 

出力:理想の

SFO Branch 03/16/2012 &nbsp; 
LAX Branch 03/16/2012 06/16/1985 
DC Branch 03/16/2012 &nbsp; 

私は、タグで囲まれたデータを取得したいと思います

ID(fetchRecord.php?fileID = )。その値を取得する方法がわかりません。 BeautifulSoupかRegex、助けてください。ありがとう!

+0

uが正確に何をすべきかをしようとしていますか? –

+0

htmlを解析し、出力に示されているようにデータを取得します。私はまた、それを行う方法がわからないfileIDをつかみたい。 – ThinkCode

答えて

1

正規表現を使用してhrefを解析することはできますが、私はそれを書くのが面倒です。 URIを取得した後、クエリ文字列を解析するための適切な方法のためhref_parse下記を参照してください。

from urlparse import urlparse 
from urlparse import parse_qs 

def href_parse(value): 
    if (value.startswith('javascript: OpenWindow(&#39;') and 
     value.endswith('&#39;)'): 
     begin_length = len('javascript: OpenWindow(&#39;') 
     end_length = len('&#39;)') 
     file_location = value[begin_length:-end_length] 

     query_string = urlparse(file_location).query 
     query_dict = parse_qs(query_string) 
     return query_dict.get('fileId', None) 


href_data = [[href_parse(td.find('a', attrs={'class': 'blue'})['href']) 
       for td in tr.findAll("td")] 
       for tr in rows] 
print href_data 
0

これはどう

import re 
urlRE = re.compile('javascript: OpenWindow\(\&#39;(.*)#39;\)') 
... 
urlMat = urlRE.match(value) 
if urlMat: 
    url = urlMat.groups()[0] 
関連する問題