嗨,鱼油,看起来你遇到了一个典型的网络钓鱼陷阱——SSL错误!别担心,这个问题相对容易解决。`requests.exceptions.SSLError` 通常是因为请求的URL使用了HTTPS,而你的Python环境对SSL证书认证有点挑剔。
### 方法一:忽略SSL证书验证
虽然这不是最安全的方式,但在某些情况下,尤其是测试或自家服务器时,可以忽略SSL证书验证:
import requests
from bs4 import BeautifulSoup
base_url = "https://your-website-url.com/#/train-new/class-detail/"
# 读取课程ID列表
ids = ["id1", "id2", "id3"] # 假设你有这些ID
for id_ in ids:
# 构建URL
url = f'{base_url}{id_}'
response = requests.get(url, verify=False)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 假设标题在一个h1标签内
title_element = soup.find('h1')
title = title_element.text if title_element else "No title found"
print(f"Title: {title}, URL: {url}")
else:
print(f"Failed to retrieve page for ID: {id_}")
注意:`verify=False` 会忽略SSL证书验证,但它会让连接变得不那么安全,所以请谨慎使用。
### 方法二:使用Session对象并指定SSL证书
在更高级的场景中,你可能需要自己指定SSL证书的路径。如果你有合法的证书,可以这么做:
import requests
from bs4 import BeautifulSoup
base_url = "https://your-website-url.com/#/train-new/class-detail/"
# 读取课程ID列表
ids = ["id1", "id2", "id3"] # 假设你有这些ID
session = requests.Session()
session.verify = '/path/to/your/certificate.pem' # 替换为你的证书路径
for id_ in ids:
# 构建URL
url = f'{base_url}{id_}'
response = session.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
# 假设标题在一个h1标签内
title_element = soup.find('h1')
title = title_element.text if title_element else "No title found"
print(f"Title: {title}, URL: {url}")
else:
print(f"Failed to retrieve page for ID: {id_}")
### 方法三:更新requests库
有时候SSL错误是因为`requests`库版本过旧导致的,你可以尝试更新它:
pip install --upgrade requests
另外,如果上面的方法还是不能解决问题,你还可以尝试安装一些额外的依赖包,比如 `certifi`:
希望这几个方法能帮你解决问题,让你继续你的“标题和URL冒险”!记得,忽略SSL验证只是临时方案,尽量找出根本原因并解决它。加油!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |