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

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

原理:

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)

此文章仅供学习交流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,883评论 25 709
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,033评论 3 119
  • 20171016周慧心赏第63天 亲爱的女儿,今天下了一天的雨,早上我们说好放学我来接你,外婆打电话还要确认...
    hmzhou阅读 221评论 0 4
  • 昨天忘了写,今早来补。 已经是第二个年头在外过中秋了,记得去年中秋在计算机班作自我介绍,没想到今年早已不在那个专业...
    沧桑刀刃阅读 207评论 0 0