-1

以下の参照コードを使用して、サイトからいくつかのアイテム名をスクレイピングしています。

# -*- coding: cp1252 -*-
import csv
import urllib2
import sys
import time
from bs4 import BeautifulSoup

page = urllib2.urlopen('http://www.vodafone.de/privat/tarife/red-smartphone-tarife.html').read()
soup = BeautifulSoup(page)
soup.prettify()
items = soup.findAll('div', {"class": "txtBox"})
for item in items:
    print unicode(item.string).encode('utf8').strip()

問題:このコードを実行すると、18 個のアイテムの名前の代わりに 18 個の「なし」が出力されます。

出力スニペット:

>>> 
None
None
None
None
None
None
None
None
None
None
4

1 に答える 1

0

最初に、マッチしたものを詳しく見てみたいと思います。これらは単純なタグではなく、より複雑な HTML 構造です。

>>> items = soup.findAll('div', {"class": "txtBox"})
>>> items[0]
<div class="txtBox">
<h3>iPhone 5</h3>
<div class="pr-stars" style="background-position: 0px -108px">
</div>
<div class="details">
<select id="color">
<option value="4">Weiß</option>
<option selected="selected" value="5">Schwarz</option>
</select>
<select id="size">
<option value="4">16 GB</option>
<option selected="selected" value="5">32 GB</option>
<option value="6">64 GB</option>
</select>
<ul>
<li>8 Megapixel-Kamera</li><li>A6 Chip</li><li>112 Gramm leicht</li></ul>
<div class="price">
<span id="price"><br/>
</span></div>
</div>
<div class="button">
<a class="vfmodal-trigger" href="#">Details </a>
</div>
</div>

<H3>含まれているタグがある場合は、おそらくその値を取得する必要があります。

for item in items:
    h3tag = item.find('h3')
    if h3tag is not None:
        print unicode(h3tag.string).encode('utf8').strip()
于 2012-12-28T14:30:07.980 に答える