从python中的特定标记中提取URL

时间:2011-06-05 14:54:38

标签: python url tags extract

所有。 我有一个巨大的html文件,其中包含以下标签:

<h3 class="r">
<a href="http://en.wikipedia.org/wiki/Digital_Signature_Algorithm" class=l onmousedown="return clk(this.href,'','','','6','','0CDEQFjACOAM')">

我需要在python中从这个页面中提取所有网址。

循环:

  1. 逐个查找<h3 class="r">的出现次数。

  2. 提取网址

  3. http://xrayoptics.by.ru/database/misc/goog2text.py我需要重新编写此脚本以提取谷歌上找到的所有链接。

    我怎样才能实现这一目标? 感谢。

3 个答案:

答案 0 :(得分:1)

from BeautifulSoup import BeautifulSoup

html = """<html>
...
<h3 class="r">
<a href="http://en.wikipedia.org/wiki/Digital_Signature_Algorithm" class=l
   onmousedown="return clk(this.href,'','','','6','','0CDEQFjACOAM')">
text</a>
</h3>
...
<h3>Don't find me!</h3>
<h3 class="r"><a>Don't find me!</a></h3>
<h3 class="r"><a class="l">Don't error on missing href!</a></h3>
...
</html>
"""
soup = BeautifulSoup(html)

for h3 in soup.findAll("h3", {"class": "r"}):
  for a in h3.findAll("a", {"class": "l", "href": True}):
    print a["href"]

答案 1 :(得分:-1)

我使用XPATH,请参阅here,了解哪些包适合Python。

答案 2 :(得分:-1)

您可以使用正则表达式(RegEx)。 此RegEx将捕获所有URL以 http 开头并被引号括起来():

http([^\"]+)

这就是在Python中完成的方式:

import re
myRegEx = re.compile("http([^\"]+)")
myResults = MyRegEx.search('<source>')

替换为存储您要搜索网址的源代码的变量。

myResults.start() myResults.end()现在包含网址的起始位置和结束位置。使用 myResults.group()函数查找与RegEx匹配的字符串。

如果还不清楚,请问。