爬虫模拟登录人人网的三种方法

# 登录人人网

# 第一种,无验证码,直接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)

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值