2017-06-20 3 views
0

私はbs4にかなり初心者です。私は価格表を抽出することを楽しみにしています。divs要素のテーブルをbeautifulsoupで抽出しようとしています

私が直面している主な問題は、htmlページでは表要素がそのまま表示されないことですが、divです。 classidで検索しようとしましたが、価格を入手できません。

これは私がしようとしたものです。ここで

url = "http://www.valoreazioni.com/indici/ftse-mib_ftsemib_mi" 
r = requests.get(url) 
data = r.text 
soup = BeautifulSoup(data,"html5lib") 

は私が失敗した

# table=soup.find('div',{'id':'maidMoneyTable'}) 
# table=soup.find(id='maidMoneyTable') 

route=pd.read_html(str(tables),flavor='html5lib') 

print(route) 

どちらの場合も、リターンがno tables were foundある価格 のテーブルを取得するために適用したフィルタであり、

どのようにして希望のテーブルを取得できますか?

+0

'html5lib'の代わりに' lxml'パーサーを試してみてください。 –

+0

もう一つの理由は、テーブルが 'Javascript'によって動的に読み込まれるということです。その場合は 'selenium'を使う必要があります。'要求 'は' Javascript'レンダリングされたページを扱うことができません。 –

答えて

0

BeautifulSoupを使用してページからデータをスクラップし、一時的にsqlite3テーブルに保存してから、pandasを使用してsqlite3を処理してpandasにします。

>>> import requests 
>>> page = requests.get('http://www.valoreazioni.com/indici/ftse-mib_ftsemib_mi').content 
>>> import bs4 
>>> soup = bs4.BeautifulSoup(page, 'lxml') 
>>> maidMoneyTable = soup.find_all(id='maidMoneyTable') 
>>> table_rows = maidMoneyTable.findAll('li', attrs={'class': 'order'}) 
>>> for row in table_rows: 
...  link = row.find('a') 
...  data = [link.attrs['href']] + [_.text for _ in link.findAll('li')] 
...  result = c.execute('''INSERT INTO market VALUES (?,?,?,?,?,?,?)''', data) 
... 
>>> df = pd.read_sql_query('SELECT * FROM market', conn) 
>>> df.head() 
               url symbol \ 
0  http://www.valoreazioni.com/titoli/a2a-a2a-mi A2A.MI 
1 http://www.valoreazioni.com/titoli/anima-holdi... ANIM.MI 
2 http://www.valoreazioni.com/titoli/atlantia-at... ATL.MI 
3 http://www.valoreazioni.com/titoli/azimut-hold... AZM.MI 
4 http://www.valoreazioni.com/titoli/banca-medio... BMED.MI 

       name item_1 item_2 item_3 item_4 
0   A2A SpA 1.50 1.503 0.003 +0.200% 
1 ANIMA HOLDING SPA 6.26 6.210 -0.040 -0.64% 
2   ATLANTIA 25.96 25.640 -0.240 -0.93% 
3  AZIMUT HOLDING 17.94 17.930 0.060 +0.34% 
4 BANCA MEDIOLANUM 7.43 7.290 -0.150 -2.02% 
関連する問題