BeautifulSoup を使用して<li>
、次の単語の任意の形式を含む要素を取得しようとしています: Ottawa
. 問題は、ottawa
などの独自のタグ内にないこと<p>
です。li
だから私は含む要素だけを印刷したいOttawa
.
HTML フォーマットは次のようになります。
<html>
<body>
<blockquote>
<ul><li><a href="http://link.com"><b>name</b></a>
(National: Ottawa, ON)
<blockquote> some description </blockquote></li>
<li><a href="http://link2.com"><b>name</b></a>
(National: Vancouver, BC)
<blockquote> some description </blockquote></li>
<li><a href="http://link3.com"><b>name</b></a>
(Local: Ottawa, ON)
<blockquote> some description </blockquote></li>
</ul>
</blockquote>
</body>
</html>
私のコードは次のとおりです。
from bs4 import BeautifulSoup
import re
import urllib2,sys
url = "http://www.charityvillage.ca/cv/nonpr/nonpr1.html"
html = urllib2.urlopen(url).read()
soup = BeautifulSoup(html)
re1='.*?'
re2='(Ottawa)'
ottawa = soup.findAll(text=re.compile(re1+re2,re.IGNORECASE|re.DOTALL))
search = soup.findAll('li')
上記のコードの結果は、Ottawa を正しく検出し、それを使用してli
要素を検索すると、要素は検出li
されますが、ページ上のすべての要素が表示されます。
私は、それらが現在連携していないことを理解していsearch = soup.findAll('li', text=re.compile(re1+re2,re.IGNORECASE|re.DOTALL))
ます.[]
私の最終目標は、基本的に<li>
、言及を含むすべての要素を取得し、名前、説明、リンクなどを含む要素Ottawa
全体を提供することです。<li>