1

これは、Web サイトのソース コード レイアウトです。

<div class="address">
    <a href="https://website.ca/classifieds/59-barclay-street/">
        59 Some Street<br />City, Zone 1
    </a>
</div>

Google Geocoding の番地、ルート、都市を取得したいと考えています。私がこれをしたら

>>>article.find('div', {'class': 'address'}).text
'59 Some StreetCity, Zone 1'

それは を奪い<br />、都市からルートを分割する方法はありません。もしそうならstr().replace('<br />',', ')、どうにかして以前の型に戻す必要があるので.text、 の間の実際のテキストを取得することができますが、<a href>非効率的です。.text実際のテキストを取得するために使用する機能を使用したいと思いますが、それを削除する機能は使用しませ<br>ん。env で呼び出されたファイルが見つからなかったBeautifulSoup.pyので、GitHub で BeautifulSoup のソース コードdef textを見ています。

アップデート:

articles = page_soup.find('h2', text='Ads').find_next_siblings('article')
for article in articles:
    link = article.find('a')
    br = link.find('br')
    ad_address = br.previous_sibling.strip() + ', ' + br.next_sibling.strip().partition(', Zone ')[0]
    #ad_address = link.br.replace_with(', ').get_text().strip().partition(', Zone ')
4

3 に答える 3

3

br区切りタグを見つけて、その周りの兄弟を取得できます。

In [4]: br = soup.select_one("div.address > a > br")

In [5]: br.previous_sibling.strip()
Out[5]: u'59 Some Street'

In [6]: br.next_sibling.strip()
Out[6]: u'City, Zone 1'

要素を見つけて、次brを使用してスペースに置き換えることもできreplace_with()ます。

In [4]: a = soup.select_one("div.address > a")
In [5]: a.br.replace_with(" ")

In [6]: a.get_text().strip()
Out[6]: u'59 Some Street City, Zone 1'

または、aタグ内のすべてのテキスト ノードを結合できます。

In [7]: a = soup.select_one("div.address > a")
In [8]: " ".join(a.find_all(text=True)).strip()
Out[8]: u'59 Some Street City, Zone 1'
于 2015-10-27T03:57:36.197 に答える
1

試す:

soup.find('div', {'class':'address'}).get_text(separator=u"<br/>").split(u'<br/>')

区切りキーワードは、テキストを連結する内部 HTML を定義します。

http://omz-software.com/pythonista/docs/ios/beautifulsoup_ref.html

于 2015-10-27T04:02:40.703 に答える