0

私は研究プロジェクトのためにデータを抽出していてfindAll('div', attrs={'class':'someClassName'})、多くのWebサイトで成功裏に使用していますが、この特定のWebサイトは

ウェブサイトへのリンク

attrsオプションを使用したときに値が返されません。しかし、attrsオプションを使用しないと、htmldom全体が取得されます。

これが私がそれをテストするために始めた簡単なコードです:

soup = bs(urlopen(url))
for div in soup.findAll('div', attrs={'class':'data'}):
    print div
4

2 に答える 2

2

私のコードは正常に機能しています。requests

import requests
from BeautifulSoup import BeautifulSoup as bs
#grab HTML
r = requests.get(r'http://www.amazon.com/s/ref=sr_pg_1?rh=n:172282,k%3adigital%20camera&keywords=digital%20camera&ie=UTF8&qid=1343600585')
html = r.text
#parse the HTML
soup = bs(html)

results= soup.findAll('div', attrs={'class': 'data'})

print results
于 2012-07-30T00:24:49.000 に答える
1

あなたまたはこの質問を読んでいる人が、指定したコードを使用してコードが attrs 値を見つけられなかった理由を知りたい場合 (以下にコピー):

soup = bs(urlopen(url))
for div in soup.findAll('div', attrs={'class':'data'}):
    print div

soup = bs(urlopen(url))問題は、 の値がurlopen(url)DOM ではなく応答オブジェクトであるため、 BeautifulSoup オブジェクトを作成しようとしたときです。

あなたが遭遇した問題は、bs(urlopen(url).read())代わりに使用することでより簡単に解決できたと確信しています.

于 2014-07-27T03:17:08.297 に答える