zoukankan      html  css  js  c++  java
  • 爬虫需要登陆怎么办?这份python登陆代码请收下

    模拟登陆思路

    通过selenium中的webdriver控制浏览器登录目标网站,然后获取模拟登陆需要的Cookie,再利用此Cookie来达到登录的效果。本次我们使用webdriver来驱动火狐浏览器插件。在登录网站时,cookie保存在发起请求的客户端中,网站服务器利用cookie来区分不同的客户端。cookie里面记录了“访问登录后才能看到的页面”这一行为的信息,含有能够向服务器证明:“我刚才登录过”。因此cookie可以用来标识客户端的身份,以存储它的信息。

    登录步骤

    导入模块

    1 from selenium import webdriver
    2 import requests
    3 import json

    启动浏览器

    通过webdriver驱动火狐浏览器,然后在加载将要访问的目标网站

    1 driver = webdriver.Firefox()
    2 driver.get('目标网站')

    点击登录

    找到网页中登录按钮所在的位置,通过浏览器模拟点击打开登录框,然后找到用户名和密码框的位置,输入用户名及密码,在寻找按钮以及密码输入框时可鼠标右键然后找到“查看元素”选项,点击之后可在网页源码中寻找。

    代码如下:

     1 #清空登录框
     2 driver.find_element_by_xpath("./*//input[@name='username']").clear()
     3 #自动填入登录用户名
     4 driver.find_element_by_xpath("./*//input[@name='username']").send_keys(user)
     5 #清空密码框
     6 driver.find_element_by_xpath("./*//input[@name='password']").clear()
     7 #自动填入登录密码
     8 driver.find_element_by_xpath("./*//input[@name='password']").send_keys(password)
     9 time.sleep(8)
    10 #点击登录按钮进行登录
    11 driver.find_element_by_xpath("./*//button[@name='loginsubmit']").click()
    12 time.sleep(10)

    记录cookie

    经过上面几步,如果没有报错的话就说明已经登录成功了,接下来我们再次加载网页获取登录cookie。

    代码如下:

    1 driver.get('目标网站')
    2 #获取cookies
    3 cookie_items = driver.get_cookies()
    4 for cookie_item in cookie_items:
    5     post[cookie_item['name']] = cookie_item['value']
    6 cookie_str = json.dumps(post)
    7 with open('cookie.txt''w', encoding='utf-8') as f:
    8     f.write(cookie_str)
    9 f.close()

    通过cookie登录

    获得cookie之后,模拟登陆就跟之前一样用requests请求网站,只需要将cookie内容加到请求中即可。

    代码如下:

    1 header = {"User-Agent""Mozilla/5.0 (Windows NT 6.1; WOW64;rv:53.0) Gecko/20100101 Firefox/53.0"}
    2 with open('cookie.txt''r', encoding='utf-8') as f:
    3     cookie = f.read()
    4 cookies = json.loads(cookie)
    5 res = requests.get(url=url, cookies=cookies, headers=header)

    对于有些网站来说,cookie的生命期较长,所以在第一次登陆获取cookie后,在以后模拟登陆时只需要调用此cookie即可,十分方便。

    具体代码如下:

     1 from selenium import webdriver
     2 import time
     3 import json
     4  
     5 user="用户名"
     6 password="密码"
     7  
     8 driver = webdriver.Firefox()
     9 driver.get('目标网站')
    10 time.sleep(5)
    11 driver.find_element_by_xpath("./*//button[@type='submit']").click()
    12 print("正在输入用户名和密码")
    13 #清空登录框
    14 driver.find_element_by_xpath("./*//input[@name='username']").clear()
    15 #自动填入登录用户名
    16 driver.find_element_by_xpath("./*//input[@name='username']").send_keys(user)
    17 #清空密码框
    18 driver.find_element_by_xpath("./*//input[@name='password']").clear()
    19 #自动填入登录密码
    20 driver.find_element_by_xpath("./*//input[@name='password']").send_keys(password)
    21  
    22 time.sleep(8)
    23 #点击登录按钮进行登录
    24 driver.find_element_by_xpath("./*//button[@name='loginsubmit']").click()
    25 time.sleep(10)
    26 driver.get('目标网站')
    27 #获取cookies
    28 cookie_items = driver.get_cookies()
    29  
    30 #获取到的cookies是列表形式,将cookies转成json形式并存入本地名为cookie的文本中
    31 for cookie_item in cookie_items:
    32     post[cookie_item['name']] = cookie_item['value']
    33 cookie_str = json.dumps(post)
    34 with open('cookie.txt''w', encoding='utf-8') as f:
    35     f.write(cookie_str)
    36 f.close()
    37 print("登录完成")
  • 相关阅读:
    学习笔记1—多线程相关笔记
    【Java并发编程一】线程安全问题
    Intellij IDEA配置优化--转载
    idea使用阿里工具优化代码+阿里开发手册
    Navicat Premium 12.1.12.0安装与激活
    H5分享功能
    excel导出使用get请求参数过长问题
    百度地图Web引用
    idea通过mapper快速定位到xml文件
    Win10企业版永久激活方法(cmd命令)
  • 原文地址:https://www.cnblogs.com/chenshengkai/p/11446455.html
Copyright © 2011-2022 走看看