加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 21:10:41 所属栏目: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要根据实际页面的表

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,'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 登录网站详解及实例
  • python采用requests库模拟登录和抓取数据的简单示例
  • python爬取网站数据保存使用的方法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读