2017-02-12 15 views
0

フランスの水路観測所の潮汐データを使用してPythonプログラムを作成しました。現在、Windows-10の下でMozilla Firefoxでこのサイトを開きます: http://maree.shom.fr/harbor/BREST/wl/0?date=2016-10-31&utc=standard (「Hauteur d'eau heure par heure」を選択し、港と日付を設定します)。それから私は、選択したテキストファイルオプションを指定して、ポップアップメニュー「として保存」から、選択を右クリックして、関連するテーブルが存在しているファイル、例えばを得る:Pythonを使用してWebページから「隠し」データを取得する

Lundi 31 octobre 2016 
00:00 01:00 02:00 03:00 04:00 05:00 
1.79m 2.76m 4.09m 5.43m 6.45m 6.87m 
06:00 07:00 08:00 09:00 10:00 11:00 
6.56m 5.64m 4.42m 3.21m 2.22m 1.61m... 

私のPythonアプリケーションからデータを抽出し このファイルは正規表現を使用しています。 私はこのプロセスを自動化したいです(Pythonアプリケーションからページを開き、関連するコンテンツを取得します)が、これを行う方法が見つかりませんでした。ウェブページのhtmlソースコード(Firefoxで右クリックして表示される)は、潮汐表を含むではありません。私はセレンを使ってみましたが、私が得るのは同じ無駄なHTMLコードです。何か方法はありますか? 「* .textとして保存」コマンドが実行されたときにFirefoxが行うことをエミュレートするため?

答えて

0

これはfirefoxの動作をエミュレートしませんが、必要に応じて辞書のデータを提供します。
考え方は、htmlに<tbody>というタグを見つけて、行を分割することです。その後、時刻は<th>タグ、高さは<td>タグです。
したがって、いくつかのループとジップがそれを行います。
この例では、htmlはファイル内にあります。あなたは変数でそれを持つこともできます。

f = open("html.txt","r").read() 

table = f[f.find("<tbody>"):f.find("</tbody>")] 

rows = table.split("<tr>") 

data = [] 

for i in range(1,len(rows),2): 
    data.extend(zip(rows[i].split("<th>")[1:],rows[i+1].split("<td>")[1:])) 

for i in range(0,len(data)): 
    x = data[i][0] 
    y = data[i][1] 
    data[i] = x[:x.find("<")],y[:y.find("<")] 

print dict(data) 

アップデート:そのジャバスクリプトが生成されたので、あなたがHTMLの表を参照してくださいいけない

理由、です。私たちは、あなたがすでに試みたように、セレンのようなものが必要です。
私はそのウェブサイトの所有者があなたを好きになっているかどうか分からないので、尋ねるか、APIがあるかどうか確認することができます。
これは、javascriptで生成されたコンテンツをスクラップする方法です。
Webdriver用にPhantomJSをインストールしました。

from selenium import webdriver 
import time 

driver = webdriver.PhantomJS(executable_path="/usr/bin/phantomjs") 
driver.get(website_link) 
time.sleep(10) # wait as long as it takes for the data to be loaded 
print(driver.find_element_by_tag_name("table").text) 
driver.close() 
+0

おかげEL3PHANTENが、私の問題は、あなたがサイトにアクセスして見ることができるよう、(簡単に)アクセス可能なHTMLにはタグがないことです。私はこれがテーブルへの動的アクセス(?)と関係があるかもしれないと思います。問題は「隠された」htmlであり、正面のテキストではありません。 – Jourdans

+0

@ジャルダン・オッケー私はちょうどhtmlを保存して、それを使って遊んだ。私は後で家に帰るときにurllibで試してみる。それを見つけたら、私は答えを更新します。 – EL3PHANTEN

+0

@ジャーダンが更新されました – EL3PHANTEN

関連する問題