2016-11-22 22 views
0

私は現時点で時刻表Webページを解析しようとしています。私がプリントアウトしている問題は、デッドスペースの精神があるということです。これは、多くのケースで見ているタグのために、テキスト入力として '& nbsp'があるためです。そのスペースは、私たちがクラスを持たない時のためにあります。私がこれまで持っていたコードであると私はif td.text is '&nbsp': continueif td.text == '&nbsp': continueif td.text == u'\xa0': continueを試してみましたが、これらのオプションのどれも私のために働くん&nbsp BeautifulSoupを削除する

from bs4 import BeautifulSoup 
import urllib2 
url="http://timetable.ait.ie/reporting/individual;student+set;id;AL%5FKNTWM%5F7%5F3%0D%0A?t=student+set+individual&days=1-5&weeks=&periods=3-20&template=student+set+individual" 
page=urllib2.urlopen(url) 
soup = BeautifulSoup(page.read(), 'lxml') 
sources = soup.findAll('table') 
for source in sources: 
    for tr in source.findAll('tr'): 
     for td in tr.findAll('td',{"rowspan":True}): 
      if td.text is u'\xa0': continue    
      else: 
       print td.text 

。これは、私が解析しようとしているHTMLコードの一部です。

<!-- START ROW OUTPUT --> 
       <tr > 
        <td style="border-bottom:3px solid #000000;" rowspan='1' >Mon</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" colspan='2' rowspan='1' > 
         <!-- START OBJECT-CELL --> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <tr> 
           <td align='left'><font color='#000000'>Networks Security 3</font></td> 
          </tr> 
         </table> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <col align='right' /> 
          <tr> 
           <td align='left'><font color='#000000'>W206</font></td> 
           <td align='right'><font color='#000080'>Bennett, Tom</font></td> 
          </tr> 
         </table> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <tr> 
           <td align='left'><font color='#000080'>3-9, 11-14</font></td> 
          </tr> 
         </table> 
         <!-- END OBJECT-CELL --> 

あなたはオプションとして& NBSPを持っていますが、後に、私はクラスのための時間を把握するために、これらの非破壊スペースをカウントする必要があります複数の「TD」のタグがある見ることができるように。どんな助けでも大歓迎です。

編集:forループの行間を無視してください。コードをコピーしてそこに残しておきます。

答えて

0
html = ''' 
     <!-- START ROW OUTPUT --> 
       <tr > 
        <td style="border-bottom:3px solid #000000;" rowspan='1' >Mon</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" >&nbsp;</td> 
        <td style="border-bottom:3px solid #000000;" colspan='2' rowspan='1' > 
         <!-- START OBJECT-CELL --> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <tr> 
           <td align='left'><font color='#000000'>Networks Security 3</font></td> 
          </tr> 
         </table> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <col align='right' /> 
          <tr> 
           <td align='left'><font color='#000000'>W206</font></td> 
           <td align='right'><font color='#000080'>Bennett, Tom</font></td> 
          </tr> 
         </table> 
         <table cellspacing='0' border='0' width='100%'> 
          <col align='left' /> 
          <tr> 
           <td align='left'><font color='#000080'>3-9, 11-14</font></td> 
          </tr> 
         </table> 
         <!-- END OBJECT-CELL -->''' 

from bs4 import BeautifulSoup 
import re 

soup = BeautifulSoup(html, 'lxml') 

tds = soup.find_all(name='td', text=re.compile(r"^\S")) 
for td in tds: 
    print(td) 

アウト:バックフィードの

<td rowspan="1" style="border-bottom:3px solid #000000;">Mon</td> 
<td align="left"><font color="#000000">Networks Security 3</font></td> 
<td align="left"><font color="#000000">W206</font></td> 
<td align="right"><font color="#000080">Bennett, Tom</font></td> 
<td align="left"><font color="#000080">3-9, 11-14</font></td> 
+0

感謝。 –

関連する問題