# 登录人人网
# 第一种,无验证码,直接post 账号密码 并且保存cookie信息到session 进行登录后的访问
# 第一种,无验证码,直接post 账号密码 并且保存cookie信息到session 进行登录后的访问
# 第一种,无验证码,直接post 账号密码 并且保存cookie信息到session 进行登录后的访问
import requests
# 使用session共享cookie(一次post一次get,必须是同一个session)
url = "http://www.renren.com/PLogin.do"
# 这里的email 和 password 都需要填写自己的账号密码这样才能够模拟浏览器发送登录请求
# 我这里 未写,你们需要自己写入
data = {"email": " ", 'password': " "}
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
}
# 登录:session.post
session = requests.session()
session.post(url, data=data, headers=headers)
# 使用登录过的session访问大鹏个人中心:session.get
resp = session.get('http://www.renren.com/880151247/profile', headers=headers)
print(resp.text)
# 第二种,无验证码,最简单的一种,直接在请求头设置 登录成功后的 Cookie,来标识 用户身份 模拟登录(需要浏览器段手动登录 再复制cookie到headers里面进行请求)
# 第二种,无验证码,最简单的一种,直接在请求头设置 登录成功后的 Cookie,来标识 用户身份 模拟登录(需要浏览器段手动登录 再复制cookie到headers里面进行请求)
# 第二种,无验证码,最简单的一种,直接在请求头设置 登录成功后的 Cookie,来标识 用户身份 模拟登录(需要浏览器段手动登录 再复制cookie到headers里面进行请求)
from urllib import request
# 董成鹏 主页:'http://www.renren.com/880151247/profile'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',
'Cookie': '写入自己登陆后的 cookie信息'
}
# 模拟请求 访问董成鹏 页面
url = 'http://www.renren.com/880151247/profile'
req = request.Request(url, headers=headers)
resp = request.urlopen(req)
with open('renren.html', 'w', encoding='utf-8') as fp:
fp.write(resp.read().decode('utf-8'))
# 第三种,有无验证码即可使用,使用selenium自动输入 账号、密码、验证码(输入多次错误时出现)后登录成功并且获取cookie信息,再放到headers里面进行请求。
# 第三种,有无验证码即可使用,使用selenium自动输入 账号、密码、验证码(输入多次错误时出现)后登录成功并且获取cookie信息,再放到headers里面进行请求。
# 第三种,有无验证码即可使用,使用selenium自动输入 账号、密码、验证码(输入多次错误时出现)后登录成功并且获取cookie信息,再放到headers里面进行请求。
import time, random
from selenium import webdriver
import requests
from urllib import request
from lxml import etree
from PIL import Image
# 加载驱动 从而 控制 浏览器
driver = webdriver.Edge(r'D:\Study\tools\webdriver\edge\msedgedriver.exe')
driver.get('http://www.renren.com/PLogin.do')
time.sleep(2)
# 先清空 表单再进行输入
driver.find_element_by_id('email').clear()
driver.find_element_by_id('email').send_keys('账号') # 输入用户名
driver.find_element_by_id('password').clear()
driver.find_element_by_id('password').send_keys('密码') # 输入密码
img_url = 'http://icode.renren.com/getcode.do?t=web_login&rnd='+str(random.random())
request.urlretrieve(img_url,'renren_yzm.jpg') # 下载验证码 到本地
image = Image.open('renren_yzm.jpg') # 打开并且展示出来验证码
image.show()
# 因为有的时候不需要验证码,所以当找不到验证码对应的标签时 直接pass
try:
driver.find_element_by_id('icode').clear()
img_res = input('输入验证码:') # 如果需要输入验证码,可以手工,或者接口给打码平台
driver.find_element_by_id('icode').send_keys(img_res)
except:
pass
# driver.find_element_by_id('autoLogin').click() # 自动登陆
driver.find_element_by_id('login').click() # 登陆
time.sleep(3)
cookie_items = driver.get_cookies() # 获取cookie值
post = {} # 保存cookie值
for cookie in cookie_items:
post[cookie['name']] = cookie['value']
print(post['t']) # 人人网登陆后需要保持登陆的cookie信息
driver.quit() # 退出selenium
## 使用登陆后的 cookie 放在 headers里面 去请求 大鹏 页面
url = 'http://www.renren.com/880151247/profile'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36 Edg/83.0.478.61',
'Cookie': 't='+post['t'],
}
response = requests.get(url,headers=headers)
print('-'*50)
html = etree.HTML(response.text)
title = html.xpath('//title/text()')
print('目前得到的页面信息', title)
print(response.url)