-1

私はこのHTMLを持っています:

<li class="news_list_bo"><a href="/news_view.php?article_id=2752">URLHunter 프로그램 버퍼오버플로우 취약점 발견!</a>
<ul class="new_liview">
    <li class="img"><a href="/news_view.php?article_id=2752"><img height="45" width="65" src="/image_article/458226972502b655fa1b7b.jpg" /></a></li>                         
    <li class="text"><a href="/news_view.php?article_id=2752">웹페이지를 구성하는 그림파일, 플래쉬파일, 미디어파일들과 같은 구성요소를 사용자에게 보여주는 URLHunter 프로그램에서 버퍼오...</a></li>
</ul>

a次のようなタグのテキストを取得しようとしています。

>>> tmp_title = re.findall(r'<a href="/news_view.php?article_id=[0-9]+">(.*?)</a>',tmp_str,re.I|re.DOTALL)'

ただし、何も見つかりません。

>>> print tmp_title
[]

<li class="text"><a href="/news_view.php?article_id=2752">との間のテキストを見つけるにはどうすればよい</a></li>ですか?

4

1 に答える 1

2

正規表現を使ってすべてを処理しようとするのではなく、Beautiful Soupのような HTML パーサーを使用してこれらのほとんどを処理することをお勧めします。ただし、HTML が解析された後の URL の照合には、正規表現が適している場合があります。

必要な URL に一致する正規表現を作成することから始めることができます。あなたの問題は?、正規表現で特別な意味を持つことでした。文字どおり a?に一致させる必要がある場合は、エスケープする必要があります。とにかく、必要な URL を一致させるための正規表現は次のとおりです。

^/news_view\.php\?article_id=[0-9]+$

文字列を見つける必要がある場合は、まず HTML をスープに解析できます。

soup = bs4.BeautifulSoup(html)

パフォーマンスを向上させるには、ドキュメントのセクションをSoupStrainers参照してください。

次に、すべてのaタグをhref興味のある と一致させることができます:

links = soup.find_all('a', href=NEWS_URL_RE)

次に、リンクからすべてのテキストを取得できます。

link_texts = [link.get_text() for link in links]
于 2012-08-20T02:04:15.403 に答える