43

問題

仕事で、クエリを実行して HTML 形式の情報テーブルを取得できるツールを使用しています。バックエンドからアクセスすることはできません。

この情報の多くは、並べ替えや平均化などのためにスプレッドシートに入れることができれば、はるかに便利です。このデータを CSV ファイルにスクリーン スクレイピングするにはどうすればよいですか?

私の最初のアイデア

私は jQuery を知っているので、それを使用して画面上の表の書式設定を削除し、コンマと改行を挿入し、混乱全体をメモ帳にコピーして CSV として保存するだけでよいと考えました。より良いアイデアはありますか?

ソリューション

はい、皆さん、コピーして貼り付けるのと同じくらい簡単でした。ばかげていると思いませんか。

具体的には、スプレッドシートに貼り付けるときに、「形式を選択して貼り付け」を選択し、「テキスト」形式を選択する必要がありました。そうしないと、スプレッドシート全体を強調表示したとしても、すべてを 1 つのセルに貼り付けようとしました。

4

11 に答える 11

34
  • ツールの UI で HTML テーブルを選択し、クリップボードにコピーします (可能な場合)。
  • エクセルに貼り付けます。
  • CSVファイルとして保存

ただし、これは自動化されたものではなく手動のソリューションです。

于 2008-11-03T16:03:57.343 に答える
13

pythonを使用:

たとえば、次のようなサイトから csv 形式で外国為替相場をスクレイピングしたいとします。

それから...

from BeautifulSoup import BeautifulSoup
import urllib,string,csv,sys,os
from string import replace

date_s = '&date1=01/01/08'
date_f = '&date=11/10/08'
fx_url = 'http://www.oanda.com/convert/fxhistory?date_fmt=us'
fx_url_end = '&lang=en&margin_fixed=0&format=CSV&redirected=1'
cur1,cur2 = 'USD','AUD'
fx_url = fx_url + date_f + date_s + '&exch=' + cur1 +'&exch2=' + cur1
fx_url = fx_url +'&expr=' + cur2 +  '&expr2=' + cur2 + fx_url_end
data = urllib.urlopen(fx_url).read()
soup = BeautifulSoup(data)
data = str(soup.findAll('pre', limit=1))
data = replace(data,'[<pre>','')
data = replace(data,'</pre>]','')
file_location = '/Users/location_edit_this'
file_name = file_location + 'usd_aus.csv'
file = open(file_name,"w")
file.write(data)
file.close()

編集: テーブルから値を取得するには: 例: palewire

from mechanize import Browser
from BeautifulSoup import BeautifulSoup

mech = Browser()

url = "http://www.palewire.com/scrape/albums/2007.html"
page = mech.open(url)

html = page.read()
soup = BeautifulSoup(html)

table = soup.find("table", border=1)

for row in table.findAll('tr')[1:]:
    col = row.findAll('td')

    rank = col[0].string
    artist = col[1].string
    album = col[2].string
    cover_link = col[3].img['src']

    record = (rank, artist, album, cover_link)
    print "|".join(record)
于 2008-11-11T01:17:11.267 に答える
5

さらに簡単(次回のために保存するため)...

Excelで

データ/外部データのインポート/新しいWebクエリ

URLプロンプトが表示されます。URLを入力すると、インポートするページで使用可能なテーブルが区切られます。出来上がり。

于 2008-11-11T03:04:50.817 に答える
5

2 つの方法が思い浮かびます (特に、Excel を持っていない私たちにとって):

  • Google スプレッドシートには優れたimportHTML機能があります。
    • =importHTML("http://example.com/page/with/table", "table", index
    • インデックスは 1 から始まります
    • 輸入後すぐにお勧めしcopyますpaste values
    • ファイル -> ダウンロード -> CSV
  • Python の優れた Pandasライブラリには、便利read_htmlto_csv機能的 な機能があります
    • URL、その URL のテーブル、および CSV のファイル名を要求する基本的な Python3 スクリプトを次に示します。
于 2015-01-22T07:37:25.260 に答える
2

クイックアンドダーティ:

ブラウザから Excel にコピーし、CSV として保存します。

より良い解決策 (長期使用の場合):

選択した言語で HTML コンテンツを取得するコードを少し書き、必要な部分をかき出します。おそらく、データ検索に加えて、すべてのデータ操作 (並べ替え、平均化など) を投入できます。そうすれば、コードを実行するだけで、必要な実際のレポートを取得できます。

それはすべて、この特定のタスクを実行する頻度によって異なります。

于 2008-11-03T16:09:00.377 に答える
2

Excel は http ページを開くことができます。

例えば:

  1. [ファイル]、[開く] の順にクリックします

  2. ファイル名の下に URL を貼り付けます。つまり、HTML テーブルを CSV にスクレイピングするにはどうすればよいですか?

  3. [OK] をクリックします

Excel は、html をテーブルに変換するために最善を尽くします。

これは最もエレガントなソリューションではありませんが、機能します!

于 2008-11-11T01:25:57.287 に答える
0

エクセルで開いてみましたか?Excel でスプレッドシートを html として保存すると、Excel が使用する形式が表示されます。私が書いた Web アプリから、この html 形式を吐き出して、ユーザーが Excel にエクスポートできるようにします。

于 2008-11-03T16:09:18.660 に答える
0

スクリーンスクレイピングを行っていて、変換しようとしているテーブルに特定の ID がある場合は、html の正規表現解析とスクリプトを使用して CSV を生成することができます。

于 2008-11-03T17:09:22.110 に答える