Python BeautifulSoup相当于lxml make_links_absolute

时间:2010-12-17 07:00:51

标签: python beautifulsoup lxml

所以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 个答案:

答案 0 :(得分:15)

在我对What is a simple way to extract the list of URLs on a webpage using python?的回答中,我作为提取步骤的一部分顺便提到了这一点;你可以轻松地在汤上写一个方法,而不仅仅是提取它。

import urlparse

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