查找带有美化组的特定链接

2024-05-23 13:51:09 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我不知道如何找到链接开始与某些文字为我的生活。 芬德尔(a)工作得很好,但太过分了。我只想列出所有链接的列表 http://www.nhl.com/ice/boxscore.htm?id=

有人能帮我吗?

非常感谢


Tags: comidhttp列表链接www文字nhl
2条回答

首先建立一个测试文档并用BeautifulSoup打开解析器:

>>> from BeautifulSoup import BeautifulSoup
>>> doc = '<html><body><div><a href="something">yep</a></div><div><a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a></div><a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a></body></html>'
>>> soup = BeautifulSoup(doc)
>>> print soup.prettify()
<html>
 <body>
  <div>
   <a href="something">
    yep
   </a>
  </div>
  <div>
   <a href="http://www.nhl.com/ice/boxscore.htm?id=3">
    somelink
   </a>
  </div>
  <a href="http://www.nhl.com/ice/boxscore.htm?id=7">
   another
  </a>
 </body>
</html>

接下来,我们可以搜索以http://www.nhl.com/ice/boxscore.htm?id=开头的href属性的所有<a>标记。可以对其使用正则表达式:

>>> import re
>>> soup.findAll('a', href=re.compile('^http://www.nhl.com/ice/boxscore.htm\?id='))
[<a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a>, <a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a>]

你可能不需要美化组,因为你的搜索是特定的

>>> import re
>>> links = re.findall("http:\/\/www\.nhl\.com\/ice\/boxscore\.htm\?id=.+", str(doc))

相关问题 更多 >