一般的なコード:
# -*- coding: cp1252 -*-
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup
from itertools import islice
page = urllib2.urlopen('http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html').read()
soup = BeautifulSoup(page)
prices = soup.findAll('div', {"class": "price"})
この後、私はデータを取得するために次のコードを試しています:コード1:
for price in prices:
print unicode(price.string).encode('utf8')
出力1:出力なし、コードはエラーなしで実行され、何も出力されません。
コード2:
for price in prices:
textcontent3= u' '.join(price.stripped_strings)
if textcontent3:
print textcontent3
Output2:出力1と同じ状況で、再び出力はありません。
コード3:
for price in prices:
fonttag = price.find('div')
if fonttag is not None:
print unicode(fonttag.string).encode('utf8').strip()
出力3:出力なし、出力1と同じ
この後、htmlの関連部分を印刷してみました。
コード4:
print prices
出力4:
</span></div>, <div class="price">
<span id="price"><br/>
</span></div>, <div class="price">
<span id="price"><br/>
</span></div>]
Output4からわかるように、htmlの美しいスープには価格の価値がありません。Webページ上では、このhtml構造は次のようになります。
<div class="price"><span id="price">49,90 €</span><br>einmalig</div>
美しいスープは、htmlページに記載されているように価格値を抽出していないため、価格のデータを取得できません。私はプログラミングに不慣れなので、この問題を解決するのを手伝ってください。私の無知を許してください。