Извлечение URL из определенных тегов в Python - PullRequest
2 голосов
/ 05 июня 2011

все.У меня есть огромный HTML-файл, который содержит такие теги:

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

Мне нужно извлечь все URL-адреса с этой страницы в Python.

В цикле:

  1. Найти вхождения <h3 class="r"> один за другим.

  2. Извлечь URL

http://xrayoptics.by.ru/database/misc/goog2text.py IМне нужно переписать этот скрипт, чтобы извлечь все ссылки, найденные в Google.

Как мне этого добиться?Спасибо.

Ответы [ 3 ]

1 голос
/ 05 июня 2011
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"]
0 голосов
/ 05 июня 2011

Вы можете использовать для этого Регулярные выражения (RegEx). Этот RegEx будет перехватывать все URL, начинающиеся с http и заключенные в кавычки ( "):

http([^\"]+)

А вот как это делается в Python:

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

Замените на переменную, хранящую исходный код, который вы хотите найти по URL.

myResults.start () и myResults.end () теперь содержат начальную и конечную позиции URL-адресов. Используйте функцию myResults.group () , чтобы найти строку, которая соответствует RegEx.

Если что-то еще не ясно, просто спросите.

0 голосов
/ 05 июня 2011

Я бы использовал XPATH, см. здесь , чтобы узнать, какой пакет подойдет для Python.

...