Python3爬虫带上cookie的实例代码


Posted in Python onJuly 28, 2020

Cookie的英文原意是“点心”,它是在客户端访问Web服务器时,服务器在客户端硬盘上存放的信息,好像是服务器发送给客户的“点心”。服务器可以根据Cookie来跟踪客户状态,这对于需要区别客户的场合(如电子商务)特别有用。

当客户端首次请求访问服务器时,服务器先在客户端存放包含该客户的相关信息的Cookie,以后客户端每次请求访问服务器时,都会在HTTP请求数据中包含Cookie,服务器解析HTTP请求中的Cookie,就能由此获得关于客户的相关信息。

下面我们就来看一下python3爬虫带上cookie的方法:

1、直接将Cookie写在header头部

# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = '''cisession=19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60;CNZZDATA1000201968=181584
6425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483922031;Hm_lvt_f805f7762a9a2
37a0deac37015e9f6d9=1482722012,1483926313;Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9=14839
26368'''
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Geck
o) Chrome/53.0.2785.143 Safari/537.36',
'Connection': 'keep-alive',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Cookie': cookie}
url = 'https://3water.com/article/191947.htm'
wbdata = requests.get(url,headers=header).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)

2、使用requests插入Cookie

# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = {
"cisession":"19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60",
"CNZZDATA100020196":"1815846425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483
922031",
"Hm_lvt_f805f7762a9a237a0deac37015e9f6d9":"1482722012,1483926313",
"Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9":"1483926368"
}
url = 'https://3water.com/article/191947.htm'
wbdata = requests.get(url,cookies=cookie).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)

实例扩展:

使用cookie登录哈工大ACM站点

获取站点登录地址

http://acm.hit.edu.cn/hoj/system/login

查看要传送的post数据
user和password

Code:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__author__ = 'pi'
__email__ = 'pipisorry@126.com'

"""
import urllib.request, urllib.parse, urllib.error
import http.cookiejar

LOGIN_URL = 'http://acm.hit.edu.cn/hoj/system/login'
values = {'user': '******', 'password': '******'} # , 'submit' : 'Login'
postdata = urllib.parse.urlencode(values).encode()
user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'
headers = {'User-Agent': user_agent, 'Connection': 'keep-alive'}

cookie_filename = 'cookie.txt'
cookie = http.cookiejar.MozillaCookieJar(cookie_filename)
handler = urllib.request.HTTPCookieProcessor(cookie)
opener = urllib.request.build_opener(handler)

request = urllib.request.Request(LOGIN_URL, postdata, headers)
try:
  response = opener.open(request)
  page = response.read().decode()
  # print(page)
except urllib.error.URLError as e:
  print(e.code, ':', e.reason)

cookie.save(ignore_discard=True, ignore_expires=True) # 保存cookie到cookie.txt中
print(cookie)
for item in cookie:
  print('Name = ' + item.name)
  print('Value = ' + item.value)

get_url = 'http://acm.hit.edu.cn/hoj/problem/solution/?problem=1' # 利用cookie请求?问还有一个网址
get_request = urllib.request.Request(get_url, headers=headers)
get_response = opener.open(get_request)
print(get_response.read().decode())
# print('You have not solved this problem' in get_response.read().decode())

到此这篇关于Python3爬虫带上cookie的实例代码的文章就介绍到这了,更多相关Python3爬虫如何带上cookie内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
python字符串,数值计算
Oct 05 Python
Python计算两个日期相差天数的方法示例
May 23 Python
Python搜索引擎实现原理和方法
Nov 27 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
matplotlib给子图添加图例的方法
Aug 03 Python
python实现小球弹跳效果
May 10 Python
python中的反斜杠问题深入讲解
Aug 12 Python
pytorch 模型可视化的例子
Aug 17 Python
Python使用python-docx读写word文档
Aug 26 Python
Python实现生成密码字典的方法示例
Sep 02 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
python实现批处理文件
Jul 28 #Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
Jul 28 #Python
python爬虫请求头设置代码
Jul 28 #Python
详解python安装matplotlib库三种失败情况
Jul 28 #Python
最简单的matplotlib安装教程(小白)
Jul 28 #Python
Python 如何实现访问者模式
Jul 28 #Python
Matplotlib 折线图plot()所有用法详解
Jul 28 #Python
You might like
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
php实现比较两个文件夹异同的方法
2015/06/18 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
利用Python为iOS10生成图标和截屏
2016/09/24 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
解决python 上传图片限制格式问题
2019/10/30 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
Java程序员面试90题
2013/10/19 面试题
精彩的推荐信范文
2013/11/26 职场文书
媒体宣传策划方案
2014/05/25 职场文书
银行求职信
2014/05/31 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
Python中else的三种使用场景
2021/06/16 Python