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

 更新时间:2018年05月21日 10:19:54   作者:wppkind  
今天小编就为大家分享一篇对python抓取需要登录网站数据的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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抓取需要登录网站数据的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于ID3决策树算法的实现(Python版)

    基于ID3决策树算法的实现(Python版)

    下面小编就为大家带来一篇基于ID3决策树算法的实现(Python版)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 简化Python的Django框架代码的一些示例

    简化Python的Django框架代码的一些示例

    这篇文章主要介绍了简化Python的Django框架代码的一些示例,实际上文中只是抽取了一些Django中最基本的功能用于简化入门者的上手复杂度,下,需要的朋友可以参考下
    2015-04-04
  • python 实现mysql自动增删分区的方法

    python 实现mysql自动增删分区的方法

    这篇文章主要介绍了python 实现mysql自动增删分区的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 如何将一个CSV格式的文件分割成两个CSV文件

    如何将一个CSV格式的文件分割成两个CSV文件

    这篇文章主要介绍了如何将一个CSV格式的文件分割成两个CSV文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Python闭包之返回函数的函数用法示例

    Python闭包之返回函数的函数用法示例

    这篇文章主要介绍了 Python闭包之返回函数的函数用法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Python动态强类型解释型语言原理解析

    Python动态强类型解释型语言原理解析

    这篇文章主要介绍了Python动态强类型解释型语言原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 教你用python提取txt文件中的特定信息并写入Excel

    教你用python提取txt文件中的特定信息并写入Excel

    这篇文章主要给大家介绍了如何利用python提取txt文件中的特定信息并写入Excel的相关资料,Python是一个强大的语言,解决这点问题非常简单,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-11-11
  • 修改Python的pyxmpp2中的主循环使其提高性能

    修改Python的pyxmpp2中的主循环使其提高性能

    这篇文章主要介绍了修改Python的pyxmpp2中的主循环使其提高性能,pyxmpp2是Python中使用需XMPP协议的一个常用工具,要的朋友可以参考下
    2015-04-04
  • Python实现上下文管理器的示例代码

    Python实现上下文管理器的示例代码

    这篇文章主要为大家详细介绍了Python中实现上下文管理器的具体方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-07-07
  • 详解Django中CSRF和CORS的区别

    详解Django中CSRF和CORS的区别

    本文主要介绍了详解Django中CSRF和CORS的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论