当使用 BeautifulSoup 进行页面解析时,有时可能会遇到只能解析部分 URL 的问题。例如,在使用相对 URL 进行解析时,有些相对 URL 只能解析出相对于当前页面的子路径,而不能解析出完整的 URL 地址。
要解决这个问题,可以使用 Python 的 urllib.parse 库中的 urljoin() 函数来将相对 URL 转换成完整的 URL 地址。具体步骤如下:
from urllib.parse import urljoin
from bs4 import BeautifulSoup
from urllib.request import urlopen
from urllib.parse import urljoin
# 获取当前 URL
url = "http://example.com/"
# 使用 urlopen() 函数打开网页
html_page = urlopen(url)
# 使用 BeautifulSoup 进行页面解析
soup = BeautifulSoup(html_page, "html.parser")
# 获取相对 URL
relative_url = "/subpage.html"
# 将相对 URL 转换成完整的 URL
full_url = urljoin(url, relative_url)
# 打印完整的 URL
print("Full URL:", full_url)
上述示例中的 full_url 变量最终输出的结果为:http://example.com/subpage.html。
通过使用 urljoin() 函数,相对 URL 可以被正确转换成完整的 URL 地址,解决了 BeautifulSoup 只能解析部分 URL 的问题。