此篇文件讲解如何登陆带有图形验证码的网站并爬取数据
原理:
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)
此文章仅供学习交流