Python BeautifulSoup эквивалентен lxml make_links_absolute - PullRequest
8 голосов
/ 17 декабря 2010

Так что у lxml есть очень удобная функция: make_links_absolute:

doc = lxml.html.fromstring(some_html_page)
doc.make_links_absolute(url_for_some_html_page)

и все ссылки в doc теперь абсолютны.Есть ли простой эквивалент в BeautifulSoup или мне просто нужно пропустить его через urlparse и нормализовать его:

soup = BeautifulSoup(some_html_page)
for tag in soup.findAll('a', href=True):
    url_data = urlparse(tag['href'])
    if url_data[0] == "":
        full_url = url_for_some_html_page + test_url

1 Ответ

15 голосов
/ 17 декабря 2010

В моем ответе на Каков простой способ извлечения списка URL-адресов на веб-странице с использованием python? Я рассмотрел это случайно как часть этапа извлечения;Вы можете легко написать метод, чтобы сделать это на супе, а не просто извлечь его.

import urlparse

def make_links_absolute(soup, url):
    for tag in soup.findAll('a', href=True):
        tag['href'] = urlparse.urljoin(url, tag['href'])
...