Как я могу получить ссылки href от HTML с помощью Python?

import urllib2

website = "WEBSITE"
openwebsite = urllib2.urlopen(website)
html = getwebsite.read()

print html

Пока все хорошо.

Но я хочу только href ссылки из простого текста HTML. Как я могу решить эту проблему?

41
задан dreftymac 17 June 2017 в 11:05
поделиться

3 ответа

Попробуйте с Beautifulsoup:

from BeautifulSoup import BeautifulSoup
import urllib2
import re

html_page = urllib2.urlopen("http://www.yourwebsite.com")
soup = BeautifulSoup(html_page)
for link in soup.findAll('a'):
    print link.get('href')

Если вам нужны только ссылки, начинающиеся с http://, используйте:

soup.findAll('a', attrs={'href': re.compile("^http://")})
91
ответ дан 27 November 2019 в 00:07
поделиться

Вы можете использовать модуль HTMLParser.

Код будет выглядеть примерно так:

from HTMLParser import HTMLParser

class MyHTMLParser(HTMLParser):

    def handle_starttag(self, tag, attrs):
        # Only parse the 'anchor' tag.
        if tag == "a":
           # Check the list of defined attributes.
           for name, value in attrs:
               # If href is defined, print it.
               if name == "href":
                   print name, "=", value


parser = MyHTMLParser()
parser.feed(your_html_string)

Примечание: Модуль HTMLParser был переименован в html.parser в Python 3.0. Инструмент 2to3 автоматически адаптирует импорт при конвертации ваших исходных текстов в 3.0.

29
ответ дан 27 November 2019 в 00:07
поделиться

Посмотрите на использование прекрасной библиотеки разбора html-файлов soup.

http://www.crummy.com/software/BeautifulSoup/

Вы сделаете что-то вроде этого:

import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(html)
for link in soup.findAll("a"):
    print link.get("href")
12
ответ дан 27 November 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: