我有这个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>
之间的文字?
答案 0 :(得分:2)
我建议使用像Beautiful Soup这样的HTML解析器来处理大部分内容,而不是试图纠正正则表达式来完成所有操作。但是,正则表达式可能适用于在解析HTML后匹配URL。
我们可以从构造正则表达式开始,以匹配您想要的URL。您的问题是?
在正则表达式中具有特殊含义。如果你需要字面上匹配?
,你需要逃避它。无论如何,这是一个匹配所需URL的正则表达式:
^/news_view\.php\?article_id=[0-9]+$
当您需要查找字符串时,您可以先将HTML解析为汤:
soup = bs4.BeautifulSoup(html)
请参阅the documentation's section on SoupStrainers
以提高效果。
然后,您可以将所有a
代码与您感兴趣的href
匹配:
links = soup.find_all('a', href=NEWS_URL_RE)
然后你可以从链接中获取所有文本:
link_texts = [link.get_text() for link in links]