所以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
答案 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'])