2016-05-04 9 views
1

ウェブサイトからテーブルをダウンロードし、正規表現を使用して関連するデータを取り出す自動スクリプトを作成しようとしています。 HTMLは、これまでのところ私のコードは、最初の3つの値、すなわちウクライナ、月 - 2016年2月と1.18を含む<tr>の最初のパットを出すことができPythonのHTMLドキュメントにのみオープニングタグを追加するには

<tr> 
    <td class="data0"><b><a target="blank" href="index.php?section=consegne_ucraina">UKRAINE</a></td> 
    <td class="value0" style="font-style:italic;text-align:center">Jan-Feb 2016</td> 
    <td class="value0" style="text-align:right"><small>(e)</small> 1.181</td>  
    <td class="value0" style="text-align:right;border-left:1px dotted"><i style="color:red">-12</i></td> 
    <td class="value0" style="text-align:right"><i style="color:red">-1,0%</i></td> 
    <td class="value0" style="text-align:right;border-left: dotted 1px"><i style="color:red">-71</i></td> 
    <td class="value0" style="text-align:right"><i style="color:red">-5,7%</i></td> 
    <td class="value0" style="text-align:right;border-left: dotted 1px"><i style="color:red">-42</i></td> 
    <td class="value0" style="text-align:right"><i style="color:red">-3,4%</i></td> 
</tr> 

    <td class="data1"><a target="blank" href="index.php?section=consegne">EU-28</a></td> 
    <td class="value1" style="font-style:italic;text-align:center">Jan-Feb 2016</td> 
    <td class="value1" style="text-align:right">25.045</td>  
    <td class="value1" style="text-align:right;border-left:1px dotted"><i style="color:green">+1.779</i></td> 
    <td class="value1" style="text-align:right"><i style="color:green">+7,6%</i></td> 
    <td class="value1" style="text-align:right;border-left: dotted 1px"><i style="color:green">+1.559</i></td>  
    <td class="value1" style="text-align:right"><i style="color:green">+6,6%</i></td> 
    <td class="value1" style="text-align:right;border-left: dotted 1px"><i style="color:green">+2.743</i></td> 
    <td class="value1" style="text-align:right"><i style="color:green">+12,3%</i></td>    
</tr> 

です。しかし、あなたがHTMLページ上のエラーのために見ることができるように、私のプログラムを停止する次のセクションには<tr>タグがありません。その場所に開封<tr>タグだけを挿入する方法はありますか?現時点では、このコードを使用して<a>タグの前後に開閉タグを挿入するためにBeautifulSoupを取得できます。

soup = BeautifulSoup(webpage,'html.parser') 
a= soup.find("a", attrs={"href":"index.php?section=consegne"}) 
tr = soup.new_tag('tr') 
a_idx = a.parent.contents.index(a) 
a.parent.insert(a_idx , tr) 

この

は私に与え、私は私が唯一の開口部 <tr>タグを作ること <td>タグ外と失敗にのみ開口部 <tr>タグを動かす助けるために誰かを必要とするという結論でそう

</tr> 
<td class="data1"><tr></tr><a href="index.php?section=consegne" target="blank">EU-28</a></td> 

次と<td>タグを開きます。

答えて

0

Molloy!代わりに、正規表現とurllibでHTMLを解析することができます。コードは次のようになります。

import urllib 
import re 
try: 
     url = ('url that youre trying to access') 
     req = urllib.request.Request(url) 
     resp = urllib.request.urlopen(req) 
     respData = resp.read() 
    except (TimeoutError, urllib.error.URLError) as e: 
     print(e) 

    month = re.findall(r'<td class="value0" style="font-style:italic;text-align:center">(.*?)</td>', str(respData)) 
    number = re.findall(r'<td class="value0" style="text-align:right"><small>(e)</small>(.*?)</td>', str(respData)) 

検索するすべてのデータに対して検索変数(re.findall)を繰り返す必要があります。 運が良かった!

+0

ありがとうございます。唯一の問題は残念ながら、htmlページにはそれぞれ約14カ国の2つのテーブルがあり、コードが変更されているかどうかはわかりません。 htmlをダウンロードして手動で ''を挿入すると、私のコードはうまくいきます。別の方法を試す前に、挿入する方法を探しています。 –

関連する問題