对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 相关文章推荐
在Django框架中编写Context处理器的方法
Jul 20 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
PyCharm+PySpark远程调试的环境配置的方法
Nov 29 Python
Django model update的多种用法介绍
Mar 28 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
python程序 线程队列queue使用方法解析
Sep 23 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
如何利用Python 进行边缘检测
Oct 14 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环境搭建最新方法
2006/09/05 PHP
网页常用特效代码整理
2006/06/23 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
PHP守护进程实例
2015/03/06 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
node.js中axios使用心得总结
2017/11/29 Javascript
js判断节假日实例代码
2017/12/27 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
详解Python中where()函数的用法
2018/03/27 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
python批量生成条形码的示例
2020/10/10 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
用python制作个音乐下载器
2021/01/30 Python
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
2014/05/07 HTML / CSS
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
国际领先的在线时尚服装和配饰店:DressLily
2019/03/03 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
2015/12/03 面试题
小学生美德少年事迹
2014/02/02 职场文书
十一酒店活动方案
2014/02/20 职场文书
《大江保卫战》教学反思
2014/04/11 职场文书
学习雷锋标语
2014/06/25 职场文书
数学教研活动总结
2014/07/02 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
你会写请假条吗?
2019/06/26 职场文书
python解析照片拍摄时间进行图片整理
2022/07/23 Python