Python BeautifulSoup 等效于 lxml 的 make_links_absolute
lxml有一个非常实用的功能:make_links_absolute:
doc = lxml.html.fromstring(some_html_page)
doc.make_links_absolute(url_for_some_html_page)
这样文档中的所有链接现在都是绝对链接了。在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
在我对如何用Python简单提取网页上的URL列表?这个问题的回答中,我顺便提到了这个过程,实际上你可以很简单地写一个方法来处理网页内容,而不仅仅是提取信息。
from urllib.parse import urljoin
def make_links_absolute(soup, url):
for tag in soup.findAll('a', href=True):
tag['href'] = urljoin(url, tag['href'])
(Python 2中使用:from urlparse import urljoin
.)