对python抓取需要登录网站数据的方法详解


Posted in Python onMay 21, 2018

scrapy.FormRequest

login.py

class LoginSpider(scrapy.Spider):
 name = 'login_spider'
 start_urls = ['http://www.login.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):
  # 登录后的代码
  pass

selenium登录获取cookie

get_cookie_by_selenium.py

import pickle
import time
from selenium import webdriver
def get_cookies():
 url = 'https://www.test.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 cookies
if __name__ == '__main__':
 cookies = get_cookies()
 pickle.dump(cookies, open('cookies.pkl', 'wb'))

获取浏览器cookie(以Ubuntu的Firefox为例)

get_cookie_by_firefox.py

import sqlite3
import pickle
def 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 cookies
if __name__ == '__main__':
 cookies = get_cookie_from_firefox()
 pickle.dump(cookies, open('cookies.pkl', 'wb'))

scrapy使用获取后的cookie

cookies = pickle.load(open('cookies.pkl', 'rb'))
yield scrapy.Request(url, cookies=cookies, callback=self.parse)

requests使用获取后的cookie

cookies = pickle.load(open('cookies.pkl', 'rb'))
s = requests.Session()
for cookie in cookies:
 s.cookies.set(cookie['name'], cookie['value'])

selenium使用获取后的cookie

from selenium import webdriver
cookies = pickle.load(open('cookies.pkl', 'rb'))
w = webdriver.Chrome()
# 直接添加cookie会报错,下面是一种解决方案,可能有更好的
# -- start --
w.get('http://www.test.com')
w.delete_all_cookies()
# -- end --
for cookie in cookies:
 w.add_cookie(cookie)

以上这篇对python抓取需要登录网站数据的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之从文件读取和保存数据
May 23 Python
python实现文件快照加密保护的方法
Jun 30 Python
win与linux系统中python requests 安装
Dec 04 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
python实现低通滤波器代码
Feb 26 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
详细分析Python可变对象和不可变对象
Jul 09 Python
python 实现压缩和解压缩的示例
Sep 22 Python
python playwright 自动等待和断言详解
Nov 27 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 Python
深入浅析python 中的匿名函数
May 21 #Python
python3 selenium 切换窗口的几种方法小结
May 21 #Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 #Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 #Python
pytorch 把MNIST数据集转换成图片和txt的方法
May 20 #Python
Python安装lz4-0.10.1遇到的坑
May 20 #Python
Python requests发送post请求的一些疑点
May 20 #Python
You might like
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
php制作文本式留言板
2015/03/18 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
js之onload事件的一点使用心得
2013/08/14 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
vue-cli脚手架的安装教程图解
2018/09/02 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
利用Python抓取行政区划码的方法
2016/11/28 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python的继承知识点总结
2018/12/10 Python
python实现对服务器脚本敏感信息的加密解密功能
2019/08/13 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
new修饰符是起什么作用
2015/06/28 面试题
决心书标准格式
2014/03/11 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
小学班主任评语
2014/12/29 职场文书
开场白怎么写
2015/06/01 职场文书
消费者理赔投诉书
2015/07/02 职场文书
爱护环境建议书
2015/09/14 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
SQL SERVER实现连接与合并查询
2022/02/24 SQL Server