爬虫登陆带有图形验证码的网站

此篇文件讲解如何登陆带有图形验证码的网站并爬取数据

原理:

1.利用webdriver驱动打开登陆页面

2.肉眼识别图形验证码

3.爬虫登陆网站并且开始抓取数据

4.抓取数据的原理也是利用webdriver打开页面,然后分析页面哦~

注:我使用火狐浏览器,需要安装驱动(geckodriver.exe),其他浏览器也需要安装驱动,网上搜搜就可以了哦

安装依赖项

pip install selenium

可使用以下命令查看是否安装成功

pip show selenium

如果出现版本号相关的内容就安装成功了

具体的思路直接上代码吧

from selenium import webdriver
import time

def loginSys(loginName, password):
    '''
    登陆
    利用webdriver驱动打开浏览器,操作页面
    此处使用火狐浏览器
    '''
    driver = webdriver.Firefox()
    driver.get('登陆的网址')
    driver.implicitly_wait(0.2)
    LoginTitle = driver.title

    # while 1:
    result = driver.title
    if LoginTitle == result:
  
        vcode = input("vcode:")  # 请求验证码,人工识别后输入

        # 自动登录
        driver.find_element_by_name('username').send_keys(loginName)  # 找到用户名录入框并填写
        time.sleep(0.2) #停顿模拟真实操作情况,降低被网站发现的几率
        driver.find_element_by_name('password').send_keys(password)  # 找到输入密码录入框并填写
        time.sleep(0.2)
        driver.find_element_by_name('safecode').send_keys(vcode)  # 找到验证码框并填写
        driver.implicitly_wait(0.2)
        driver.find_element_by_class_name("mybutton").click()  # 点击登录

        driver.implicitly_wait(10)

        # cookies传递,用于request爬取数据-此处没用到
        # 如果想用其他方式获取数据可使用此cookies
        cook = driver.get_cookies()
       
        #已经登陆成功了,此处写抓取数据的代码
        #打开页面,抓取数据   
        sniffData(driver)
          
        #抓取数据完毕关闭浏览器
        time.sleep(0.2)
        #最后关闭浏览器
        driver.close()
        

def sniffData(driver):
   '''
    抓取数据 
    '''
    #打开需要抓数据的页面
    driver.get('xxx.html')
    #根据类获取数据
    trs=driver.find_elements_by_class_name("universityname")
    for tr in trs:
        print(tr.text)
    

if __name__ == "__main__": 
    username="你的用户名"
    password="你的密码"
    loginSys(username, password)

此文章仅供学习交流

你可能感兴趣的:(爬虫登陆带有图形验证码的网站)