2016-12-25 13 views
2

価格をthis pageから削り取ろうとしています。BeautifulSoup:テーブルが見つかりません

私は、このテーブルが必要になります。

table class = "table table-condensed table-info" 

私は内容を印刷し、テーブルを検索した場合しかし、それは見つけることができません。

from BeautifulSoup import BeautifulSoup 
import urllib2 
from bs4 import BeautifulSoup 

url = "https://www.predictit.org/Contract/4393/Will-Obama-pardon-Hillary-Clinton#openoffers" 

page = urllib2.urlopen(url).read() 
soup = BeautifulSoup(page) 
print soup 

任意の助けいただければ幸いです!

答えて

1

実際の問題 - 価格が異なるエンドポイントへ別の非同期リクエストがロードされています。あなたはあなたのコードでそれをシミュレートする必要があります。

from bs4 import BeautifulSoup 
import requests 

url = "https://www.predictit.org/Contract/4393/Will-Obama-pardon-Hillary-Clinton#openoffers" 
price_url = "https://www.predictit.org/PrivateData/GetPriceListAjax?contractId=4393" 

with requests.Session() as session: 
    session.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'} 
    session.get(url) # visit main page 

    # request prices 
    response = session.get(price_url) 
    soup = BeautifulSoup(response.content, "html.parser") 
    tables = soup.select("table.table-info") 
    for row in tables[0].select("tr")[2:]: 
     values = [td.find(text=True, recursive=False) for td in row('td') if td.text] 
     print(values) 

は(デモ用)最初に「はい」テーブルの内容を印刷します:我々は介してウェブ・スクレイピングセッションを維持している

[u'13', u'1555', u'12', u'240'] 
[u'14', u'707', u'11', u'2419'] 
[u'15', u'2109', u'10', u'3911'] 
[u'16', u'1079', u'9', u'2634'] 
[u'17', u'760', u'8', u'2596'] 
[u'18', u'510', u'7', u'970'] 
[u'19', u'973', u'6', u'1543'] 
[u'20', u'483', u'5', u'2151'] 
[u'21', u'884', u'4', u'1195'] 
[u'22', u'701', u'3', u'950'] 

注意requests.Session()はこちら。

contractId GETパラメータが含まれています(価格が異なるページをリクエストする場合は、適切なcontractIdを必ず使用してください)。

+0

を返します。これは完全に機能します。ありがとうございました!! – gtownrower

0

あなたはCSSセレクタによって要素を見つけるためにBeautifulSoupのselect機能を使用することができます。

>>> soup = BeautifulSoup(page) 
>>> soup.select('table.table.table-condensed.table-info') 

[<table class="table table-condensed table-striped table-info"> 
<tbody> 
<tr> 
<td>Symbol:</td> 
<td>CLINTON.OBAMAPARDON</td> 
</tr> 
<tr> 
<td>Start Date:</td> 
<td>11/10/2016</td> 
</tr> 
<tr> 
<td>End Date:</td> 
<td>01/20/2017 11:59 PM (ET)</td> 
</tr> 
<tr> 
<td>Shares Traded:</td> 
<td>388,522</td> 
</tr> 
<tr> 
<td>Today's Volume:</td> 
<td>3,610</td> 
</tr> 
<tr> 
<td>Total Shares:</td> 
<td>143,774</td> 
</tr> 
<tr> 
<td>Today's Change:</td> 
<td style="color: green">+1<span style="font-family: helvetica;">¢</span> <i class="glyphicons up_arrow green" style="margin-top: 3px;"></i></td> 
</tr> 
</tbody> 
</table>] 
+0

ありがとうございます。クラス "table table-condensed table-info"を持つ別のテーブルを探しています。このコードを使用して表示されません – gtownrower

+0

これは「テーブルテーブル集約テーブルストライプテーブル情報」テーブル – gtownrower

関連する問題