1,获取网站的cookies并保存到本地,利用本地cookies模拟登录
from http.cookiejar import CookieJar ,LWPCookieJar
from urllib.request import Request ,urlopen ,HTTPCookieProcessor ,build_opener
from urllib.parse import urlencode
# 模拟登陆美食杰----------------------------------
cookie = LWPCookieJar(filename='meishi123123.txt')
cookie_handler = HTTPCookieProcessor(cookie)
opener = build_opener(cookie_handler)
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'
}
# 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F'
post_url = 'https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fi.meishi.cc%2Flogin.php%3Fac%3Dzhuce'
# urlencode对url当中的参数进行编码
# quote 对url当中的中文进行编码
# urlencode()编码的对象为字典类型
# quote 编码的对象为字符串
post_data = urlencode({
'username':'1468630684@qq.com',
'password':'shuai123'
}).encode('utf-8')
# 请求url 并传参 设置编码方式
response = opener.open(post_url,post_data)
cookie.save(ignore_discard=True , ignore_expires=True)#上面创建一个保存cookies的空文件,这里进行保存
# 利用登陆获取的cookie来请求美食杰首页
cookie = LWPCookieJar()
cookie.load('meishi123123.txt',ignore_expires=True ,ignore_discard=True)
opener = build_opener(HTTPCookieProcessor(cookie))
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:61.0) Gecko/20100101 Firefox/61.0'
}
requset =Request('https://www.meishij.net/',headers=headers)
response = opener.open(requset)
print(response.read().decode())
方式二
from http.cookiejar import CookieJar ,LWPCookieJar
from urllib.request import Request ,urlopen ,HTTPCookieProcessor ,build_opener
from urllib.parse import urlencode
def get_cookie_from_network():
from selenium import webdriver
url_login = 'http://login.weibo.cn/login/'
driver = webdriver.PhantomJS()
driver.get(url_login)
driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') # 改成你的微博账号
driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') # 改成你的微博密码
driver.find_element_by_xpath('//input[@type="submit"]').click() # 点击登录
# 获得 cookie信息
cookie_list = driver.get_cookies()
print cookie_list
cookie_dict = {}
for cookie in cookie_list:
#写入文件
f = open(cookie['name']+'.weibo','w')
pickle.dump(cookie, f)
f.close()
if cookie.has_key('name') and cookie.has_key('value'):
cookie_dict[cookie['name']] = cookie['value']
return cookie_dict
实例3.模拟登录人人网
from urllib.request import requset
from http.cookiejar import CookieJar
from urllib import parse
# 1.登录
# 1.1创建一个cookiejar对象
cookiejar=cookiejar()
# 1.2使用cookie创建一个HTTPCookieProcess对象
handler=request.HTTPCookieProcessor(cookiejar)
# 1.3使用上一部创建的handler创建opener
opener=request.build_opener(handler)
# 1.4使用opener发送登录的请求(需要人人网的邮箱和密码)
headers={
"User-Agent":"",
}
data={
'email':'',
'password':'',
}
login_url=""
req=request.Request(login_url,data=parse.urlencode(data),headers=headers)
requset.urlopen(req)
# 2.访问个人主页
zhuye_url='http://'#要访问的主页url
#获取主页页面的时候,不要新建一个opener
#因该使用之前的那个opener,之前的那个opener已经包含了
#登陆需要的cookie信息
result=opener.open(zhuye_url)
#写入文本
with open('renren.html','w',encoding='utf-8') as fp:
fp.write(resp.read().decode('utf-8'))