python requests添加cookies模拟登陆爬取网页

本文介绍如何通过抓取浏览器中的Cookies信息并将其添加到HTTP请求头部,实现模拟已登录状态访问网站的功能。文中提供了两种场景的例子:未登录状态与登录状态,并展示了具体的Python代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从浏览器中拿到cookies添加到header中即可,cookies信息可以以直接在浏览器请求信息中拿到

 

 

  • 无cookies,未登录时

 

#!coding:utf-8
import requests

url = 'http://t.dianping.com/deal/22752400'
header = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
          'Accept-Encoding': 'gzip, deflate',
          'Accept-Language': 'zh-CN,zh;q=0.9',
          'Cache-Control': 'max-age=0',
          'Connection': 'keep-alive',
          'Host': 't.dianping.com',
          'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
          }
print(requests.get(url, headers=header).text)

无cookies未登录时访问结果如下:

 

 

  • 有cookies,模拟登陆场景
#!coding:utf-8
import requests

url = 'http://t.dianping.com/deal/22752400'
header = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
          'Accept-Encoding': 'gzip, deflate',
          'Accept-Language': 'zh-CN,zh;q=0.9',
          'Cache-Control': 'max-age=0',
          'Connection': 'keep-alive',
          'Cookie': 'cy=258; cye=guiyang; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; _lxsdk_cuid=1627487eabec8-0082feec299df4-3e3d5f01-100200-1627487eabfc8; _lxsdk=1627487eabec8-0082feec299df4-3e3d5f01-100200-1627487eabfc8; _hc.v=7fb40515-c2b8-59d3-2b47-427bcabb3554.1522373487; _dp.ac.v=f5832f3d-885a-440c-9a2d-4f0a221ea73e; dper=ce3cbad9cf126491bef9842a52d26dfd28d3e6b65494f66952c02618cef002b7; ll=7fd06e815b796be3df069dec7836c3df; ua=15329319971; JSESSIONID=791B2B83CA269DB065936DE85C79DEDA; _lxsdk_s=16275323b8a-80c-56c-04a%7C%7C2',
          'Host': 't.dianping.com',
          'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'
          }

print(requests.get(url, headers=header).text)

有cookies登陆之后可以得到网页信息,结果如下:

模拟登录豆瓣网站并爬取数据通常涉及以下几个步骤: 1. **准备工具**: - Python环境(如:Python 3.x) - 爬虫库:如requests、BeautifulSoup、selenium等(用于发送HTTP请求、解析HTML) - 可能需要的:验证码识别工具(如tesseract-ocr)如果页面有验证码 2. **获取登录页面信息**: 使用requests.get登录页URL获取登录页面源码,分析登录表单字段,包括用户名、密码输入框和登录按钮等。 3. **构造登录请求**: 构造包含账号和密码的登录数据(通常是以form-data或json格式),比如`{"username": "your_username", "password": "your_password"}`。 4. **模拟登录**: - 如果是简单的HTML表单,直接POST登录数据到登录API。 - 如果有验证码,可能需要用selenium打开浏览器,手动输入验证码后再提交。 5. **设置cookie**: 登录成功后,获取登录后的cookie,这是保持会话状态的关键。 6. **数据抓取**: 使用相同的工具(加上cookie)访问目标数据页面,通过解析返回的HTML获取所需的数据。 7. **保存或处理数据**: 将爬取的数据存储到文件、数据库或者进一步进行清洗、分析。 ```python import requests from bs4 import BeautifulSoup # 需要注意替换为实际的用户信息和请求头 login_url = 'https://accounts.douban.com/login' data = { 'name': 'your_username', 'password': 'your_password', # 根据实际情况检查是否需要填充更多登录字段 } # 发送登录请求 with requests.post(login_url, data=data, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} ) as response: if response.status_code == 200: cookies = response.cookies # 进行数据抓取... soup = BeautifulSoup(response.text, 'html.parser') # 提取数据... else: print('Login failed with status code:', response.status_code) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值