
python 如何获取链接
用户关注问题
如何使用 Python 提取网页中的所有链接?
我想用 Python 从一个网页的 HTML 内容中获取所有的超链接(URL),应该使用哪些库和方法?
使用 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)
怎样用 Python 验证链接是否有效?
得到一组链接后,我想判断链接是否可访问,如何用 Python 编写程序完成这项任务?
利用 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)
怎样处理 Python 中获取的相对链接地址?
在网页中经常会遇到相对链接,我用 Python 获取到这些相对链接后,如何将它们转换成完整的绝对链接?
使用 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