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语言的12个基础知识点小结
Jul 10 Python
跟老齐学Python之深入变量和引用对象
Sep 24 Python
Python编程中运用闭包时所需要注意的一些地方
May 02 Python
使用Python程序抓取新浪在国内的所有IP的教程
May 04 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python+django实现文件下载
Jan 17 Python
python装饰器深入学习
Apr 06 Python
python广度优先搜索得到两点间最短路径
Jan 17 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python 遍历pd.Series的index和value
Nov 26 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
解决python对齐错误的方法
Jul 16 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中取得URL的根域名的代码
2011/03/23 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP实现微信公众平台音乐点播
2014/03/20 PHP
destoon公司主页模板风格的添加方法
2014/06/20 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
JQuery表格内容过滤的实现方法
2013/07/05 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
vue 2.0封装model组件的方法
2017/08/03 Javascript
mpvue全局引入sass文件的方法步骤
2019/03/06 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
详解Python爬虫的基本写法
2016/01/08 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
Django 限制用户访问频率的中间件的实现
2018/08/23 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
python实现字符串加密成纯数字
2019/03/19 Python
python实现梯度下降法
2020/03/24 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
市场拓展计划书
2014/05/03 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
银行贷款收入证明
2014/10/17 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
导游词之张家口
2019/12/13 职场文书
浅谈MySQL函数
2021/10/05 MySQL
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers