对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 参数列表中的self 显式不等于冗余
Dec 01 Python
python实现跨文件全局变量的方法
Jul 07 Python
使用Python抓取模板之家的CSS模板
Mar 16 Python
在Python中使用mechanize模块模拟浏览器功能
May 05 Python
python中的代码编码格式转换问题
Jun 10 Python
Saltstack快速入门简单汇总
Mar 01 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
Python 实现自动导入缺失的库
Oct 29 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
基于Python的图像阈值化分割(迭代法)
Nov 20 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
一个连接两个不同MYSQL数据库的PHP程序
2006/10/09 PHP
小谈php正则提取图片地址
2014/03/27 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
python xml解析实例详解
2016/11/14 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
Python使用OpenCV进行标定
2018/05/08 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
运动会宣传口号
2014/06/09 职场文书
初三英语教学计划
2015/01/23 职场文书
员工手册董事长致辞
2015/07/29 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server