2016-10-30 12 views
1

複数のスパンタグから、または複数のスパンタグ内に文字列コンテンツを抽出しようとしています。 HTMLページのスナップショットは、次のとおりです。具体的にBeautifulSoupの複数のスパンタグ内でコンテンツを抽出する

<div class="secondary-attributes"> 
    <span class="neighborhood-str-list"> 
     Southeast 
    </span> 
    <address> 
     1234 Python Blvd S<br>Somewhere, NV 98765 
    </address> 
    <span class="biz-phone"> 
     (555) 123-4567 
    </span> 
</div> 

、私は<span class="biz-phone></span>タグの間に囲まれた電話番号を抽出しようとしています。私は、次のコードでそうしようとしました

import requests 
from bs4 import BeautifulSoup 

res = requests.get(url) 
soup = BeautifulSoup(res.text, "html.parser") 

phone_number_results = [phone_numbers for phone_numbers in soup.find_all('span','biz-phone')] 

構文エラーなしでコンパイルされたコードが、それは非常に私が望んでいた結果得られませんでした:私の質問はあり

['<span class="biz-phone">\n  (702) 476-5050\n </span>', '<span class="biz-phone">\n  (702) 253-7296\n </span>', '< 
span class="biz-phone">\n  (702) 385-7912\n </span>', '<span class="biz-phone">\n  (702) 776-7061\n </span>', '<spa 
n class="biz-phone">\n  (702) 221-7296\n </span>', '<span class="biz-phone">\n  (702) 252-7296\n </span>', '<span c 
lass="biz-phone">\n  (702) 659-9101\n </span>', '<span class="biz-phone">\n  (702) 355-9445\n </span>', '<span clas 
s="biz-phone">\n  (702) 396-3333\n </span>', '<span class="biz-phone">\n  (702) 643-9851\n </span>', '<span class=" 

biz-phone">\n  (702) 222-1441\n </span>'] 

を2つの部分:

  1. 私はプログラムを実行すると、なぜspanタグが表示されますか?
  2. どうすれば削除できますか?私は文字列の編集だけでもできますが、BeautifulSoupパッケージをフルに活用していないような気がします。よりエレガントな方法がありますか?

注:ページ全体で上記のようなHTMLコードのスニペットがあります。 <span class="biz-phone"> (555) 123-4567 </span>コードのインスタンス(抽出する必要がある電話番号)が多いため、find_all()を使用する理由を考えていました。

ありがとうございます。

+2

'phone_numbers.text'または' phone_numbers.text.strip() 'を使用 – furas

+0

@furasありがとう、それはトリックでした! – daOnlyBG

答えて

2
  1. find_all()タグ(bs4.element.Tag)のリストではなく、文字列を返します。

  2. @furasが指摘するように、あなたがタグ内のテキストを抽出するために、タグのそれぞれにtextプロパティにアクセスしたい:

    phone_number_results = [phone_numbers.text.strip() for phone_numbers in soup.find_all('span', 'biz-phone')]

(あなたも呼び出したいことstrip()その上に)

+0

ありがとうございます。 '.text'がトリックをしました!私はその財産を認識していませんでした。私はいくつかの試み(例: '.contents')を試みましたが、それは役に立たなかったようです。しかし、あなたのソリューションはうまくいった。 – daOnlyBG

関連する問題