Ottawa
の形式を含む<li>
要素を取得するためにBeautifulSoupを使用しようとしています。問題は、ottawa
が、<p>
のような自分自身のタグ内に決して存在しないことです。だからOttawa
を含むli
の要素だけを印刷したい。BeautifulSoupを使用して文字列に基づいてli要素を抽出する
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')
上記のコードの結果が正しくオタワを見つけ、li
要素を見つけるためにそれを使用した場合それはli
要素を見つけるが、それは私にページ上のすべてのものを与える。
私は私の最終目標は、Ottawa
の一切の言及を含むすべての<li>
要素を取得し、私と全体<li>
要素を与える基本的に、彼らは[]
でsearch = soup.findAll('li', text=re.compile(re1+re2,re.IGNORECASE|re.DOTALL))
結果をやろうとしているとして、一緒に現在はないことを理解しますなどの名前、説明、リンク、
@ thiago-m私はあなたがそれに助けが必要かどうかを教えてください、あなたが一致したいパターンを正確にはわかりません。 「ローカル(オタワ)」ではなく、「(Regional | Local | National):オタワ」というだけかもしれませんか? "\(。*:Ottawa \)" – KurzedMetal
@ thiago-m正規表現を改善しようとしたところ、いくつかのノードが同じ構造に従わず、アンカーがいくつかあることがわかりました。実際のリンクと構造体に従わない項目をスキップするだけです。GL – KurzedMetal
私は 'local'部分を削除し、必要な部分のほとんどを取り出しました。私は十分に検索したので、私は約20ページを掻いていたので、リストは巨大です。 – paradd0x