You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用requests库从受密码保护的网站获取数据?

解决密码保护网站的Python监控脚本问题

嘿,作为兼职自由编辑遇到公司通知系统掉链子这种事真的太糟心了!别担心,我来帮你一步步搞定这个Python脚本——从登录密码保护网站,到定时监控内容变化,再到发送邮件提醒,全给你安排明白,而且都是新手友好的步骤~

第一步:搞定密码保护网站的登录

这是你当前遇到的核心问题,网站的密码验证通常分两种情况,我都给你写好示例:

情况1:HTTP基本认证(比较少见,但简单)

有些网站用的是最基础的HTTP账号密码弹窗,直接用requests的auth参数就能搞定:

import requests

# 替换成你的账号密码和目标网站URL
auth = ('你的用户名', '你的密码')
response = requests.get('https://目标网站的监控页面URL', auth=auth)

# 验证是否登录成功:打印页面前100个字符看看
print(response.text[:100])

情况2:表单登录(绝大多数网站用这个)

大部分网站是通过登录表单提交账号密码,这时候需要用requests.Session()来保持登录状态(相当于浏览器的Cookie),还要先获取登录页面的csrf令牌(很多网站用来防机器人):

  1. 先安装解析HTML的工具(用来提取csrf令牌):
pip install beautifulsoup4
  1. 登录代码示例:
import requests
from bs4 import BeautifulSoup

# 创建会话,保持登录状态
session = requests.Session()

# 1. 先访问登录页面,拿到csrf令牌(如果网站有的话)
login_page_url = 'https://目标网站的登录页面URL'
login_page = session.get(login_page_url)
soup = BeautifulSoup(login_page.text, 'html.parser')

# 这里要根据实际网站的表单字段改!打开浏览器F12看登录表单的name属性
# 比如常见的csrf字段名是csrfmiddlewaretoken、csrf_token等
csrf_token = soup.find('input', {'name': 'csrfmiddlewaretoken'}).get('value')

# 2. 构造登录提交的数据
login_data = {
    'username': '你的用户名',
    'password': '你的密码',
    'csrfmiddlewaretoken': csrf_token  # 如果网站没有csrf令牌就删掉这一行
}

# 3. 提交登录请求,注意URL是表单的action属性值(看浏览器F12的网络请求)
login_submit_url = 'https://目标网站的登录提交URL'
login_response = session.post(login_submit_url, data=login_data)

# 验证登录是否成功:找登录后页面的特征文本,比如"欢迎回来"
if '欢迎回来' in login_response.text:
    print('登录成功!可以开始监控了')
else:
    print('登录失败!检查账号密码,或者表单字段有没有写错')

第二步:定时拉取并检查内容变化

接下来要让脚本每隔一分钟跑一次,对比特定字段的变化。我们可以用time.sleep()来实现定时,同时保存上一次的内容做对比:

import time

# 初始化上一次的监控内容,第一次运行时为空
last_monitored_content = None

while True:
    try:
        # 用之前的session请求监控页面(保持登录状态)
        target_page = session.get('https://目标网站的监控页面URL')
        soup = BeautifulSoup(target_page.text, 'html.parser')
        
        # 提取你要监控的特定字段!这里要根据网站结构改
        # 比如监控工作列表的数量,或者某个显示未读工作的文本
        current_content = soup.find('div', {'class': 'job-count'}).text.strip()
        
        # 对比内容变化
        if last_monitored_content is None:
            # 第一次运行,记录初始内容
            last_monitored_content = current_content
            print(f'初始化监控:当前内容是 {current_content}')
        else:
            if current_content != last_monitored_content:
                print('⚠️ 内容有变化!新的工作机会来了!')
                # 这里调用邮件提醒函数(下面会写)
                send_email_alert()
                # 更新记录的内容
                last_monitored_content = current_content
            else:
                print('内容无变化,继续监控...')
        
        # 每隔一分钟跑一次
        time.sleep(60)
    
    # 处理网络错误等异常,避免脚本直接崩溃
    except Exception as e:
        print(f'请求出错了:{str(e)},2分钟后重试')
        time.sleep(120)

第三步:发送邮件提醒

最后加上邮件提醒功能,用Python自带的smtplib就行,以QQ邮箱为例(其他邮箱比如Gmail、163配置类似,查一下对应的SMTP服务器和端口):

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_email_alert():
    # 替换成你的邮箱信息
    sender_email = '你的邮箱@qq.com'
    receiver_email = '你的专用提醒账户@xxx.com'
    # 注意:这里不是邮箱登录密码,是邮箱的SMTP授权码!去邮箱设置里开启SMTP获取
    email_password = '你的SMTP授权码'
    
    # 邮件内容
    mail_content = '目标网站的工作内容有更新啦!快上去看看有没有新机会~'
    message = MIMEText(mail_content, 'plain', 'utf-8')
    message['From'] = Header('工作监控脚本', 'utf-8')
    message['To'] = Header('提醒账户', 'utf-8')
    message['Subject'] = Header('💼 新工作机会提醒', 'utf-8')
    
    try:
        # 连接QQ邮箱的SMTP服务器(SSL加密)
        smtp_server = smtplib.SMTP_SSL('smtp.qq.com', 465)
        smtp_server.login(sender_email, email_password)
        smtp_server.sendmail(sender_email, receiver_email, message.as_string())
        smtp_server.quit()
        print('邮件提醒发送成功!')
    except smtplib.SMTPException as e:
        print(f'发送邮件失败:{str(e)}')

新手友好提示

  • 安装所有需要的库:pip install requests beautifulsoup4
  • 调试的时候把time.sleep(60)改成time.sleep(5),这样不用等一分钟就能看到效果,正式运行再改回来
  • 不要把用户名密码硬编码在脚本里!可以写个config.py文件,用import config来引用,或者用环境变量,更安全
  • 用浏览器F12的「网络」标签,查看登录时的请求参数,这是搞定表单登录的关键——每个网站的表单字段可能不一样,一定要自己核对

慢慢来,第一次写Python脚本遇到问题很正常,先把登录部分跑通,再一步步加定时和邮件功能,祝你能抢到更多工作机会!

内容的提问来源于stack exchange,提问作者Plesbien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:42:16