python登录cookies
‘壹’ 为什么使用python的requests获取到的cookie不能用于登录
r1.cookies 是个容器,是一个object你直接传相当传object的str
正确的写法是用get 取出来再传 设置cookie
cookies = {'PHPSESSID':r1.cookies.get('PHPSESSID')}
r2 = requests.post(url, data=json.mps(payload), headers=headers,cookies=cookies)
print(r2.text)
‘贰’ 怎么用python爬需要登录的网站数据
scrapy.FormRequest
login.py
class LoginSpider(scrapy.Spider):
name = 'login_spider'
start_urls = ['hin.com'] def parse(self, response):
return [
scrapy.FormRequest.from_response(
response, # username和password要根据实际页面的表单的name字段进行修改
formdata={'username': 'your_username', 'password': 'your_password'},
callback=self.after_login)] def after_login(self, response):
# 登录后的代码
pass123456789101112131415
selenium登录获取cookie
get_cookie_by_selenium.py
import pickleimport timefrom selenium import webdriverdef get_cookies():
url = 'httest.com'
web_driver = webdriver.Chrome()
web_driver.get(url)
username = web_driver.find_element_by_id('login-email')
username.send_keys('username')
password = web_driver.find_element_by_id('login-password')
password.send_keys('password')
login_button = web_driver.find_element_by_id('login-submit')
login_button.click()
time.sleep(3)
cookies = web_driver.get_cookies()
web_driver.close() return cookiesif __name__ == '__main__':
cookies = get_cookies()
pickle.mp(cookies, open('cookies.pkl', 'wb'))
获取浏览器cookie(以Ubuntu的Firefox为例)
get_cookie_by_firefox.py
import sqlite3import pickledef get_cookie_by_firefox():
cookie_path = '/home/name/.mozilla/firefox/bqtvfe08.default/cookies.sqlite'
with sqlite3.connect(cookie_path) as conn:
sql = 'select name,value from moz_cookies where baseDomain="test.com"'
cur = conn.cursor()
cookies = [{'name': name, 'value': value} for name, value in cur.execute(sql).fetchall()] return cookiesif __name__ == '__main__':
cookies = get_cookie_from_firefox()
pickle.mp(cookies, open('cookies.pkl', 'wb'))12345678910111213141516
scrapy使用获取后的cookie
cookies = pickle.load(open('cookies.pkl', 'rb'))yield scrapy.Request(url, cookies=cookies, callback=self.parse)12
requests使用获取后的cookie
cookies = pickle.load(open('cookies.pkl', 'rb'))
s = requests.Session()for cookie in cookies:
s.cookies.set(cookie['name'], cookie['value'])1234
selenium使用获取后的cookie
from selenium import webdriver
cookies = pickle.load(open('cookies.pkl', 'rb'))
w = webdriver.Chrome()# 直接添加cookie会报错,下面是一种解决方案,可能有更好的# -- start --w.get('hww.test.com')
w.delete_all_cookies()# -- end --for cookie in cookies:
w.add_cookie(cookie)
‘叁’ 怎样用Python设计一个爬虫模拟登陆知乎
两种方法:
1.带cookielib和urllib2
import urllib2
import urllib
import cookielib
def login():
email = raw_input("请输入用户名:")
pwd = raw_input("请输入密码:") data={"email":email,"password":pwd}
post_data=urllib.urlencode(data) cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers
={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website =
raw_input('请输入网址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print
content.read()
2.使用selenium
import selenium import webdriver
browser=webdriver.Firefox()
browser.get("Url")
browser.find_element_by_id(" ").sendkey("username")
browser.find_element_by_id(" ").sendkey("pass")
browser.find_element_by_id(" ").click()
其实我这个最简单了,用的python3,requests, 只需要验证一次,就会保存cookies,下次登录使用cookies登录。
第一步、打开首页获取_xref值,验证图片 第二步、输入账号密码 第三步、看是否需要验证、要则下载验证码图片,手动输入
第四步、判断是否登录成功、登录成功后获取页面值。
‘肆’ python获取cookie后怎么模拟登陆网站
运行平台:Windows
Python版本:Python3.x
IDE:Sublime text3
一、为什么要使用Cookie
Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容,登陆前与登陆后是不同的,或者不允许的。
使用Cookie和使用代理IP一样,也需要创建一个自己的opener。在HTTP包中,提供了cookiejar模块,用于提供对Cookie的支持。
三、总结
获取成功!如果看过之前的笔记内容,我想这些代码应该很好理解吧。
‘伍’ python爬虫的session 和cookie登录问题。
cookie是已经登录了,网站已经是登录状态模拟打开网站
session是模拟输入用户名密码登录网站
‘陆’ python爬虫用cookies进行登录是一次性的吗
你要看被爬网站是如何设置cookies,不同网站的cookies功能都不太一样,如果你指的是cookie的有效时间的话,不同网站的cookies的时长不一样,长得可能一个cookies你可以用一星期,短的可能只有十五分钟。按F12,你可以在里面找到该网站cookies的最大有效时间
‘柒’ python语言使用selenium怎么设置自己的cookies
添加 cookie
1.这里需要添加两个cookie,一个是.CNBlogsCookie,另外一个是.Cnblogs.AspNetCore.Cookies。
2.我这里打开的网页是博客的主页:htt
gs.com/yoyoketang,没进入登录页。
3.添加cookie后刷新页面,接下来就是见证奇迹的时刻了。
2.20.5 参考代码:
# coding:utf-8
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("htt
ogs.com/yoyoketang")
# # 添加cookie c1 = {u'domain': u'.cnblogs.com', u'name': u'.CNBlogsCookie', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False}
c2 = {u'domain': u'.cnblogs.com', u'name': u'.Cnblogs.AspNetCore.Cookies', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False} driver.add_cookie(c1)
# 添加2个值
driver.add_cookie(c2)
time.sleep(3)
# 刷新下页面就见证奇迹了
driver.refresh()
有几点需要注意:
1.登录时候要勾选下次自动登录按钮。
2.add_cookie()只添加name和value,对于博客园的登录是不成功。
3.本方法并不适合所有的网站,一般像博客园这种记住登录状态的才会适合
‘捌’ 如何利用cookie登陆 python
由于Scrapy是基于Twisted实现的,所以同时兼顾有非常好的效率,相对来说唯一的缺点就是安装比较麻烦,依赖也比较多,我还算是比较新的osx,一样没办法直接pip install scrapy
另外如果在spider中引入xpath的话,再在chrome上安装xpath的插件,那么解析路径一目了然,开发效率奇高。
‘玖’ Python 使用cookie登陆的问题
cookie是有过期时间的,网站设置了有个值,所以到了过期时间就会失效
退出了的话服务器会知道你的cookie里session已经过期。
大概有,比如经常保持此会话活动状态。
不过最好还是把你的代码改进为脚本自动登录获取cookie,Python的requests库文档里有讲怎么配置登录:http://cn.python-requests.org/zh_CN/latest/
‘拾’ 使用python怎么获取京东网站cookie进行登录
# -*- coding: utf-8 -*-
# !/usr/bin/python
import os
import urllib2
import urllib
import cookielib
import re
import sys
from bs4 import BeautifulSoup
‘‘‘
编码方式的设置,在中文使用时用到中文时的处理方式
‘‘‘
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding("utf-8")
def getHtml(url,data={}):
if(data=={}):
req=urllib2.Request(url)
else:
req=urllib2.Request(url,urllib.urlencode(data))
html=urllib2.urlopen(req).read()
return html
try:
cookie = cookielib.CookieJar()
cookieProc = urllib2.HTTPCookieProcessor(cookie)
except:
raise
else:
opener = urllib2.build_opener(cookieProc)
opener.addheaders = [(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11‘)]
urllib2.install_opener(opener)
auth_url=‘‘
#auth_url = ‘‘
home_url=‘‘
#home_url = ‘;
url = ""
login=getHtml(url)
#print login
loginSoup = BeautifulSoup(login,‘html.parser‘)
#查找登陆参数中的uuid
uuid = loginSoup.find_all("form")[0].find_all("input")[0][‘value‘]
print uuid
clrName=loginSoup.find_all("form")[0].find_all("input")[6][‘name‘]
clrValue=loginSoup.find_all("form")[0].find_all("input")[6][‘value‘]
‘‘‘这俩参数不是必须。。。。
eid=loginSoup.find_all("form")[0].find_all("input")[4][‘value‘]
fp=loginSoup.find_all("form")[0].find_all("input")[5][‘value‘]
‘‘‘
#下载验证码图片:
checkPicUrl = loginSoup.find_all("div",id="o-authcode")[0].find_all("img")[0][‘src2‘]
req = getHtml(checkPicUrl)
checkPic = open("checkPic.jpg","w")
checkPic.write(req)
checkPic.close()
#调用mac系统的预览(图像查看器)来打开图片文件
os.system(‘open /Applications/Preview.app/ checkPic.jpg‘)
checkCode = raw_input("请输入弹出图片中的验证码:")
#登录URL
url = ""
# 登陆用户名和密码
postData = {
‘loginname‘:‘你自己的账号‘,
‘nloginpwd‘:‘你自己的密码‘,
‘loginpwd‘:‘你自己的密码‘,
# ‘machineNet‘:‘‘,
# ‘machineCpu‘:‘‘,
# ‘machineDisk‘:‘‘,
str(clrName):str(clrValue),
‘uuid‘:uuid,
‘authcode‘: checkCode
}
passport=getHtml(url,postData)
print passport
# 初始化一个CookieJar来处理Cookie
‘‘‘
cookieJar=cookielib.CookieJar()
# 实例化一个全局opener
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
# 获取cookie
req=urllib2.Request(auth_url,post_data,headers)
result = opener.open(req)
# 访问主页 自动带着cookie信息
‘‘‘
result = opener.open(‘‘)
# 显示结果
#print result.read()
soup=BeautifulSoup(result,‘html.parser‘)
#昵称
nickName = soup.find_all("input", id="nickName")[0]["value"]
print "nickName:",
print nickName