2017-05-26 20 views
0

アンカータグのhref属性と "Horizo​​ntal Zero Dawn"という文字列から削り取りたい場合。beautifulSoupを使用してクラスを持たないタグからの掻き取り

アンカータグには独自のクラスがなく、ソースコード全体にさらに多くのアンカータグがあるためです。

beautifulSoupを使用して必要なデータをスクラップできますか?

<div class="prodName"> 
<a href="/product.php?sku=123;name=Horizon Zero Dawn">Horizon Zero Dawn</a></div> 

答えて

1

アンカータグには独自のクラスはありません。親divを発見し、適切なhrefプロパティとテキストでアンカーを見つけることによって、我々は必要な2つの値を抽出することができます。

from bs4 import BeautifulSoup 

page = '<div class="prodName"><a href="/product.php?sku=123;name=Horizon Zero Dawn">Horizon Zero Dawn</a></div>' 

soup = BeautifulSoup(page) 

div = soup.find('div', {'class': 'prodName'}) 
a = div.find('a', {'href': True}, text='Horizon Zero Dawn') 

print a['href'] 
print a.get_text() 

これは、出力します。

/product.php?sku=123;name=Horizon Zero Dawn 
Horizon Zero Dawn 

EDIT:

をコメント後の更新。あなたがページ内に複数のdivの要素を持っている場合は、それらをループする必要があり、それぞれの中に存在するすべてのaの要素を見つけ、そのよう:V-ZARD @

import requests 
from bs4 import BeautifulSoup 

url ='https://in.webuy.com/product.php?scid=1' 
source_code = requests.get(url) 
plain_text = source_code.text 
soup = BeautifulSoup(plain_text,'html.parser') 
for div in soup.findAll('div',{'class':'prodName'}): 
    a = div.findAll('a') 
    for link in a: 
     href = link.get('href') 
     print(href) 
+0

は答えを更新しました – asongtoruin

関連する問題