0

TSV形式のデータのWebページをダウンロードしてスクレイピングします。TSV データの周りには、不要な HTML があります。

Web ページの html をダウンロードし、beautifulsoup を使用して必要なデータをかき集めます。ただし、TSV データはメモリに格納されています。

このTSVデータをパンダでメモリ内で使用するにはどうすればよいですか? 私が見つけることができるすべてのメソッドは、既にスクレイピングしたデータからではなく、ファイルまたは URI から読み取りたいようです。

テキストをダウンロードしてファイルに書き込んでから、再スクレイピングしたくありません。

#!/usr/bin/env python2

from pandas import pandas as p
from BeautifulSoup import BeautifulSoup
import urllib2

def main():
    url = "URL"
    html = urllib2.urlopen(url)
    soup = BeautifulSoup(html)
    # pre is the tag that the data is within
    tab_sepd_vals = soup.pre.string

    data = p.LOAD_CSV(tab_sepd_vals)
    process(data)
4

2 に答える 2

3

データのテキスト/文字列バージョンをStringIO.StringIO(またはio.StringIOPython 3.X で) フィードすると、そのオブジェクトを pandas パーサーに渡すことができます。したがって、コードは次のようになります。

#!/usr/bin/env python2

import pandas as p
from BeautifulSoup import BeautifulSoup
import urllib2
import StringIO

def main():
    url = "URL"
    html = urllib2.urlopen(url)
    soup = BeautifulSoup(html)
    # pre is the tag that the data is within
    tab_sepd_vals = soup.pre.string

    # make the StringIO object
    tsv = StringIO.StringIO(tab_sepd_vals)

    # something like this
    data = p.read_csv(tsv, sep='\t') 

    # then what you had
    process(data)
于 2013-10-24T15:49:59.510 に答える
1

次のようなメソッドread_csvは、CSV を解析し、オブジェクトを構築するという 2 つのことを行います。DataFrameDataFrame

>>> import pandas as pd
>>> df = pd.DataFrame([['a', 1], ['b', 2], ['c', 3]])
>>> print(df)
   0  1
0  a  1
1  b  2
2  c  3

コンストラクターは、さまざまなデータ構造を受け入れます。

于 2013-10-24T15:17:21.200 に答える