import urllib2
website = "WEBSITE"
openwebsite = urllib2.urlopen(website)
html = getwebsite.read()
print html
Пока все хорошо.
Но я хочу только href ссылки из простого текста HTML. Как я могу решить эту проблему?
Попробуйте с 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://")})
Вы можете использовать модуль 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.
Посмотрите на использование прекрасной библиотеки разбора html-файлов soup.
http://www.crummy.com/software/BeautifulSoup/
Вы сделаете что-то вроде этого:
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup(html)
for link in soup.findAll("a"):
print link.get("href")