2017-07-31 14 views
0

私はYahoo Finance Webサイトを徹底的に調べて会社の在庫データを取得していますが、私はtdタグを抽出するために美しいスープを使っていましたが、それをやる。以下は、私のテキストを抽出する必要がある私のHTMLコードのいくつかの行です。以下美しいスープのtdからスパンを削除する方法

[ < td class = "Py(10px) Ta(start)" 
data - reactid = "53" > < span data - reactid = "54" > 31 - Jul - 2017 < /span></td > , < td class = "Py(10px)" 
data - reactid = "55" > < span data - reactid = "56" > 991.90 < /span></td > , < td class = "Py(10px)" 
data - reactid = "57" > < span data - reactid = "58" > 1, 021.70 < /span></td > , < td class = "Py(10px)" 
data - reactid = "59" > < span data - reactid = "60" > 986.75 < /span></td > , < td class = "Py(10px)" 
data - reactid = "61" > < span data - reactid = "62" > 1, 011.20 < /span></td > 

]

私のコードは私に上記のコンテンツを提供します。

INFY = url.urlopen("https://in.finance.yahoo.com/quote/INFY.NS/history?p=INFY.NS") 
INFYHis = INFY.read() 
INFYSoup = soup(INFYHis,'html.parser') 
INFYtd=INFYSoup.findAll("td",{"class":"Py(10px)"}) 

私は非常にPythonには新しく、分析のための削除やテキストの取得方法がわかりません。

+0

あなたはそれを削除するかテキストを取得しますか? –

+0

はい、私はテキストを取得し、データフレームの形で持っているので、私はそれをpandas datafromeとして使うことができます –

答えて

1

BeautifulSoupのunwrap()メソッドを使用できます。

だけPy(10px)クラスを抽出する前にINFYSoupコンテンツから<span>タグコンテンツをフィルタリングするために、これらの2つの余分な2行を追加します

INFYSoup = soup(INFYHis,'html.parser') 

for match in INFYSoup.find_all('span'): # add these two extra two lines 
    match.unwrap()      # to filter the `<span>` tag content first 

# then proceed as usual 
INFYtd=INFYSoup.findAll("td",{"class":"Py(10px)"}) 

for child in INFYtd: 
    print child 

デモ:リンク重複での回答に基づいて実装さ

<td class="Py(10px) Ta(start)" data-reactid="53">31-Jul-2017</td> 
<td class="Py(10px)" data-reactid="55">991.90</td> 
... 
... 
<td class="Py(10px)" data-reactid="1540">992.59</td> 
<td class="Py(10px)" data-reactid="1542">30,89,588</td> 

をコメント(Removing span tags from soup BeautifulSoup/Python)にあります。

+0

あなたのコードを試していただきありがとうございます。を削除しました。 –

+0

@KeertheshKumar、それがうまくいったと聞いてよかった!よくやった! – davedwards

関連する問題