python 如何获取链接

python 如何获取链接

作者:Joshua Lee发布时间:2026-01-05阅读时长:0 分钟阅读次数:13

用户关注问题

Q
如何使用 Python 提取网页中的所有链接?

我想用 Python 从一个网页的 HTML 内容中获取所有的超链接(URL),应该使用哪些库和方法?

A

使用 BeautifulSoup 库提取网页链接

可以使用 Python 的 requests 库请求网页内容,然后用 BeautifulSoup 库解析 HTML。通过使用 find_all('a') 方法找到所有的标签,再通过属性 href 获取链接。例如:

import requests
from bs4 import BeautifulSoup

response = requests.get('http://example.com')
soup = BeautifulSoup(response.text, 'html.parser')
links = [a['href'] for a in soup.find_all('a', href=True)]
print(links)
Q
怎样用 Python 验证链接是否有效?

得到一组链接后,我想判断链接是否可访问,如何用 Python 编写程序完成这项任务?

A

利用 requests 库发送请求检测链接状态

可以使用 requests 库向链接发送 HEAD 或 GET 请求,并检查返回的状态码。如果状态码是 200,说明链接有效。示例代码:

import requests

url = 'http://example.com'
try:
    response = requests.head(url, timeout=5)
    if response.status_code == 200:
        print('链接有效')
    else:
        print('链接无效或不可访问')
except requests.RequestException as e:
    print('请求失败:', e)
Q
怎样处理 Python 中获取的相对链接地址?

在网页中经常会遇到相对链接,我用 Python 获取到这些相对链接后,如何将它们转换成完整的绝对链接?

A

使用 urllib.parse.urljoin 进行链接拼接

通过 urllib.parse 模块中的 urljoin 函数,可以将相对链接和网页的基础 URL 拼接成完整的绝对链接。示例代码:

from urllib.parse import urljoin

base_url = 'http://example.com/subpage/'
relative_link = '../images/pic.jpg'
absolute_link = urljoin(base_url, relative_link)
print(absolute_link)  # 输出:http://example.com/images/pic.jpg