1

前の質問を1時間閲覧し、さまざまな解決策を試しましたが、これを機能させることができません。Webサイトから必要な結果を抽出しました。今は、必要な特定の情報のためにこれらのdivをマイニングする必要があります。

結果は次のように分離されます。

items=soup.findAll(id=re.compile("itembase"))

各アイテムについて、たとえば、このhtmlからlatとlongを抽出します。

<div id="itembase29" class="result-item -result unselected clearfix even" data-
part="fl_base" data-lat="51.9006" data-lon="-8.51008" data-number="29" 
is-local="true" data-customer="32060963" data-addrid="1" 
data-id="4b00fae498e3cc370133e8a14fd75160">
<div class="arrow">
</div>

それ、どうやったら出来るの?ありがとう。

4

1 に答える 1

2
  1. HTMLオブジェクトを美しいスープに渡します。

    soup = BeautifulSoup(html)
    
  2. divを見つけます。

    div = soup.div
    
  3. divから探している属性を取得します。

    lat, lon = div.attrs['data-lat'], div.attrs['data-lon']
    
  4. 印刷します。

    >>> print lat, lon
    51.9006 -8.51008
    

わかりやすくするためにメソッドをそこに残しました.attrsが、より一般的には、辞書などの任意の.attrs要素の属性にアクセスできます。たとえば、メソッドは 実際には必要ありませんdiv['data-lon']。これは明らかにdivsのリストでは機能しません。リストを反復処理する必要があります。

for div in divs:
    print div['data-lon'], div['data-lat']

またはリスト内包。

[(div['data-lon'], div['data-lat']) for div in divs]
于 2012-11-13T18:17:32.517 に答える