python、selenium、webdriver——自动登录豆瓣功能(解决验证码登录)

与文章https://blog.csdn.net/xljdawow111/article/details/81057211共同使用

from selenium import webdriver
import time
import urllib.request
from chaojiying import Chaojiying_Client

driver=webdriver.Chrome()
url = 'https://www.douban.com/'
driver.get(url)

def get_cookies():
    # option = webdriver.ChromeOptions()
    # option.set_headless()
    # driver = webdriver.Chrome(options=option)
    driver.find_element_by_id('form_email').clear()
    driver.find_element_by_id('form_email').send_keys('uername@126.com')
    driver.find_element_by_id('form_password').clear()
    driver.find_element_by_id('form_password').send_keys('password')
    driver.implicitly_wait(5)
    driver.find_element_by_class_name('bn-submit').click()

    time.sleep(10)  # 这里再想办法处理验证码的事情,现在手动输入
    cookies_list = driver.get_cookies()
    driver.quit()
    use_cookies(cookies_list)

def get_cookies2():
    driver.find_element_by_id('form_email').clear()
    driver.find_element_by_id('form_email').send_keys('username@126.com')
    driver.find_element_by_id('form_password').clear()
    driver.find_element_by_id('form_password').send_keys('password')

    img = driver.find_element_by_id('captcha_image')
    img_url = img.get_attribute('src')
    urllib.request.urlretrieve(img_url, 'F:\douban.jpg')
    time.sleep(3)
    yanzhengma = Chaojiying_Client.result222()
    driver.find_element_by_id('captcha_field').send_keys(yanzhengma)  # 验证码输入搞定了,非常好用
    driver.implicitly_wait(5)
    driver.find_element_by_class_name('bn-submit').click()

    time.sleep(5)
    cookies_list = driver.get_cookies()
    driver.quit()

def use_cookies(cookies_list):
    driver=webdriver.Chrome()
    driver.get(url)
    driver.delete_all_cookies()
    time.sleep(3)
    for cookie in cookies_list:
        cookie_dict={
        "domain":".douban.com",
        'name': cookie.get('name'),
        'value': cookie.get('value'),
        "expires": "",
        'path': '/',
        'httpOnly': False,
        'HostOnly': False,
        'Secure': False
        }
        driver.add_cookie(cookie_dict)
    driver.refresh()
    if(driver.find_element_by_xpath('//*[@id="db-nav-sns"]/div/div/div[3]/ul/li[2]/a').text=='我的豆瓣'):
        print('恭喜你已经使用cookies登录成功。')
    driver.quit()

try:
    driver.find_element_by_id('captcha_field')
    a=True
except:
    a=False

    if a==True:
        print("验证码元素存在,保存验证码图片,并将图片上传给超级鹰识别,取的回传的验证码进行登录")
        get_cookies2()
    elif a==False:
        print("验证码元素不存在")
        get_cookies()

 

要使用Python Selenium进行登录,首先需要安装selenium库。您可以使用命令`pip install selenium`来安装selenium库。接下来,您需要安装一个浏览器驱动,这里以谷歌浏览器为例。请确保您的浏览器版本与驱动版本相匹配。 一旦您安装好了selenium库和浏览器驱动,您可以使用以下步骤来实现Python Selenium登录豆瓣网: 1. 导入所需的库和模块: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys ``` 2. 创建一个浏览器驱动对象: ```python driver = webdriver.Chrome("path/to/chromedriver") ``` 在这里,您需要将"path/to/chromedriver"替换为您实际的浏览器驱动路径。 3. 打开豆瓣登录页面: ```python driver.get("https://accounts.douban.com/login") ``` 4. 查找并输入用户名和密码: ```python username_input = driver.find_element_by_name("username") username_input.send_keys("your_username") password_input = driver.find_element_by_name("password") password_input.send_keys("your_password") ``` 在这里,您需要将"your_username"和"your_password"替换为您的豆瓣网用户名和密码。 5. 提交表单进行登录: ```python login_button = driver.find_element_by_class_name("btn-submit") login_button.click() ``` 这样就会模拟点击登录按钮进行登录。 6. 等待登录完成和页面加载: ```python driver.implicitly_wait(10) # 等待10秒钟 ``` 在这里,您可以自定义等待的时间,以确保页面完全加载。 完成以上步骤后,您就可以使用Python Selenium实现登录豆瓣网了。请确保在运行代码之前已经正确安装了selenium库并配置了浏览器驱动路径。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值