如果遇到需要登录才能访问的校园网页面,如何添加登录功能?
时间: 2024-09-14 07:08:49 浏览: 18
如果你遇到需要登录的校园网页面,可以使用`requests`库配合`Session`对象来模拟浏览器登录过程。首先,你需要获取登录表单的相关信息,如登录URL、用户名字段名、密码字段名等。然后构造登录数据并发送POST请求。
这里是简化的示例:
```python
import requests
from requests.auth import HTTPBasicAuth
def login(username, password, login_url, auth_url=""):
session = requests.Session()
# 获取登录表单数据
login_page = session.get(login_url)
soup = BeautifulSoup(login_page.content, 'html.parser')
csrf_token = soup.find('input', {'name': '_csrf'})['value'] # 假设CSRF token在这里
# 构造登录数据
login_data = {
'username': username,
'password': password,
'_csrf': csrf_token
}
# 发送登录请求
if auth_url:
auth_response = session.post(auth_url, data=login_data, auth=HTTPBasicAuth(username, password))
else:
auth_response = session.post(login_url, data=login_data)
# 检查登录是否成功,例如看登录后的首页是否正确
if auth_response.url != 'https://www.example.com/login_success':
raise ValueError("Login failed")
return session
# 实例化并登录
logged_in_session = login('your_username', 'your_password', 'http://example.university.com/login')
# 登录后的爬取操作
html_content = logged_in_session.get('http://example.university.com/campus')
parse_content(html_content.text)
```
阅读全文