潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)
# -*- coding: utf-8 -*-
# 斌彬电脑
# @Time : 2018/9/15 0015 4:52 #cookie 是服务器发给浏览器的特殊信息
# 可以理解为一个临时通行证
# 以 json 形式存放
# name: cookie 的名称
# value: coikie 的值
# domain: 可以使用此 cookie 的域名
# path: 可以使用此 cookie 的页面路径
# expires/Max-Age : cookie 的超时时间 默认是 session ,当浏览器关闭时失效
# secure : 设置是否只能通过 https 来传递此条 cookie # 豆瓣登录
# 抓包 按F12,在输入账号,密码框中输入相应值后,点登录,
# 找到 302 页面跳转,这时所需要的数据就在这里 login import requests
from urllib import request
from lxml import etree
from PIL import Image class DoubanSpider():
def __init__(self,us,ps):
self.session = requests.session()
self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'}
self.login_url = 'https://accounts.douban.com/login'
self.us = us
self.ps = ps def start_res(self):
# 第一步先不登录,先 get 看看有没有验证码出现,
re = self.session.get(self.login_url).content.decode()
ht = etree.HTML(re)
self.pass_login(ht) def pass_login(self,ht):
captcha_id = ht.xpath('//input[@name="captcha-id"]/@value')
# print(captcha_id)
# 验证码下载地址
captcha_solution = ht.xpath('//img[@id="captcha_image"]/@src')
# print(captcha_solution)
# 如果没有验证码
if captcha_solution == []:
print('没有发现验证码')
data = {
'source': 'movie',
'redir': 'https://movie.douban.com/top250',
'form_email': self.us,
'form_password':self.ps,
'login': '登录'
}
else:
im_path = '1.png' # 验证码存放路径
# 文件下载方法, 下载地址, 路径文件名
request.urlretrieve(captcha_solution[0], im_path)
img = Image.open(im_path).show()
data = {
'source': 'movie',
'redir': 'https://movie.douban.com/top250',
'form_email': self.us,
'form_password':self.ps,
'captcha-solution': input('请输入验证码--->>'), # 验证码
'captcha-id': captcha_id[0],
'login': '登录'
}
res = self.session.post(self.login_url, data=data, headers = self.headers).content.decode()
self.login_res(res) # 登录成功后获取页面内容
def login_res(self,res):
html = etree.HTML(res)
# 如果登录成功,r 列表中有值,否则为空列表
r = html.xpath( '//*[@id="db-global-nav"]/div/div[1]/ul/li[2]/a/span[1]/text()' )
if r ==[]:
print('登录失败')
else:print('登录成功,当前账号为:%s' %r[0]) if __name__ == '__main__':
lo = DoubanSpider('账号', '密码')
lo.start_res()
data = {
'source': 'movie',
'redir': 'https://movie.douban.com/top250',
'form_email': self.us,
'form_password':self.ps,
'captcha-solution': input('请输入验证码--->>'), # 验证码
'captcha-id': captcha_id[0],
'login': '登录'
}
当要输入验证码时,要提交的值为data2,
其中 captcha - solution 的值为验证码
captcha - id 在页面源码中 ctrl + f 搜索

用 xpath 找到节点,可取其值
潭州课堂25班:Ph201805201 爬虫基础 第十三课 cookie (课堂笔记)的更多相关文章
- 潭州课堂25班:Ph201805201 爬虫基础 第八课 selenium (课堂笔记)
Selenium笔记(1)安装和简单使用 简介 Selenium是一个用于Web应用程序测试的工具. Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, ...
- 潭州课堂25班:Ph201805201 爬虫基础 第三课 urllib (课堂笔记)
Python网络请求urllib和urllib3详解 urllib是Python中请求url连接的官方标准库,在Python2中主要为urllib和urllib2,在Python3中整合成了url ...
- 潭州课堂25班:Ph201805201 爬虫基础 第六课 选择器 (课堂笔记)
HTML解析库BeautifulSoup4 BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库,它的使用方式相对于正则来说更加的简单方便,常常能够节省我们大量的时间 ...
- 潭州课堂25班:Ph201805201 爬虫基础 第四课 Requests (课堂笔记)
优雅到骨子里的Requests 1528811134432 简介 上一篇文章介绍了Python的网络请求库urllib和urllib3的使用方法,那么,作为同样是网络请求库的Request ...
- 潭州课堂25班:Ph201805201 爬虫基础 第十一课 点触验证码 (课堂笔记)
打开 网易盾 http://dun.163.com/trial/picture-click ——在线体验——图中点选 打码平台 ——超级鹰 http://www.chaojiying.com/ ...
- 潭州课堂25班:Ph201805201 爬虫基础 第十课 图像处理- 极验验证码 (课堂笔记)
用 python 的 selenium 访问 https://www.huxiu.com/ 自动通过验证码 # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 20 ...
- 潭州课堂25班:Ph201805201 爬虫基础 第七课 Python与常见加密方式 (课堂笔记)
打开图形界面 18版 Python与常见加密方式 前言 我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes. 所以当我们在Python中进行加密操作的时 ...
- 潭州课堂25班:Ph201805201 爬虫基础 第五课 (案例) 豆瓣分析 (课堂笔记)
动态讲求 , 翻页参数: # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2018/9/1 0001 3:44 import requests,json class ...
- 潭州课堂25班:Ph201805201 爬虫高级 第十三 课 代理池爬虫检测部分 (课堂笔记)
1,通过爬虫获取代理 ip ,要从多个网站获取,每个网站的前几页2,获取到代理后,开进程,一个继续解析,一个检测代理是否有用 ,引入队列数据共享3,Queue 中存放的是所有的代理,我们要分离出可用的 ...
随机推荐
- 非常干货之Python资源大全
非常干货之Python资源大全
- emmc基础技术8:操作模式4-data transfer mode
1.前言 eMMC总线操作包含: boot mode, device identification mode interrupt mode data transfer mode 本文主要描述data ...
- 获取静态 selected的当前的value的值
<!DOCTYPE html><html><head><script>function checkField(val){alert("输入值已 ...
- Asp.Net Core 快速邮件队列设计与实现
发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...
- Html5 序列帧动画
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- echarts地图显示不正常问题
echarts2内置地图,而echarts3无内置地图,需要自己下载并导入. 在刚开始接触地图的时候,使用dreamweaver来构建页面,使用的编码不是UTF-8 代码是按照官方的拷贝下来的(我使用 ...
- spring事物深入了解
1.问题 1.以前对事物的了解只是停留在声明式事物,配置xml,或使用注解,事物的传播行为也只用过REQUIRED和SUPPORTS,可以说对事物的了解很模糊. 2.直到在开发中遇到问题.. 问题的描 ...
- androidpn 推送系统
(文中部分内容来自网络,如无意中侵犯了版权,请告之!) XMPP协议: XMPP : The Extensible Messaging andPresence Protocol. 中文全称:可扩展通讯 ...
- PYTHON-模块 sys os random shutil-练习
# 作业:# 添加工程根目录至环境变量 要求可以跨平台# import sys,os# BATH_DIR=os.path.dirname(os.path.dirname(__file__))# sys ...
- XPATH语法(一)
Xpath简介 XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言.XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点 ...