python + webdriver

python + webdriver


在使用webdriver 之前,我们首先搞清楚另一个问题,selenium是什么?

**Selenium是一个用于Web应用程序测试的工具。
Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE,Mozilla和Firefox等。**


本次我们就是selenium来模拟登录

1.安装环境,如何安装 selenium

so easy
具体跟以往装的一些python依赖库什么的很相似

我们打开命令窗口(当然你是安装过settools的,不懂的自己百度, 我们打开python安装目录 shift+鼠标右键 命令窗口)

#cmd下 运行该命令.

pip install selenium 

如果已经安装需要查看版本 python 回车
import selenium
help(selenium)

我装的是selenium 3.4.3版本的

这里写图片描述


2.webdriver 的使用,webdriver使用很简单

一般用这个 就可以直接调用

 driver=webdriver.Firefox()
 driver.get(url)

到了这里你是不是觉得很简单,如果你用的是火狐 或者 谷歌老旧 版本,你可能运行不会报错
如果是新版本恭喜入坑

接下来我们先解决 webdriver.Firefox() 报错问题

我们需要下载一个驱动,火狐有狐火的驱动,谷歌的驱动,百度下都有

我们以火狐为例,首先下载驱动

[火狐驱动下载连接]:(http://download.csdn.net/detail/eb_num/9901579)

下载完毕后,我们将放在python安装的目录下,如图所示
这里写图片描述
在环境变量中配置path 添加本地的 火狐浏览器安装目录
这里写图片描述
这里写图片描述
如果是谷歌自己百度下载一个驱动,跟火狐一样,放在python目录下就OK 了


下来放 大招,看下具体代码:

我具体取的是这个页面.
这里写图片描述

#学信网信息爬取
import  bottle
import pymysql
from bottle import route, run
from selenium import webdriver
import time

#数据库连接
def con_mysql(sql):
    try:
        # 获取一个数据库连接,注意如果是UTF-8类型的,需要制定数据库
        conn = pymysql.connect(host='localhost', user='root', passwd='admin', db='test', port=3306, charset='utf8')
        cur = conn.cursor()  # 获取一个游标
        cur.execute(sql)
        cur.close()  # 关闭游标
        conn.close()  # 释放数据库资源

    except  Exception:
        print("发生异常")
#页面登录

def login(username, password):
 url = 'https://account.chsi.com.cn/passport/login?service=https://my.chsi.com.cn/archive/j_spring_cas_security_check'
 driver=webdriver.Firefox()
 driver.get(url)


 #模拟登录
 driver.find_element_by_id('username').send_keys(username)
 driver.find_element_by_id('password').send_keys(password)
 driver.find_element_by_xpath(".//*[@id='fm1']/input[3]").click()
 #让这家伙睡会  O(∩_∩)O哈哈~  为什么要睡呢,这是为了模拟手动登录,防止被封
 time.sleep(3)
 driver.refresh()
#以上模拟登录算是完成了
 driver.get("https://my.chsi.com.cn/archive/gdjy/xj/show.action")#具体要爬取那个页面数据就是那个页面的URL

 time.sleep(2)
 #sql语句我们 参数传值的形式
 sql = '''
        INSERT INTO xue_xin_info VALUES((SELECT REPLACE(UUID(),'-','')),
         '{u_name}','{sex}','{birthday}','{nation}','{identified}',
         '{school_name}','{leve}','{major}','{year_}','{edu_class}',
         '{learning}','{branch_institute}','{department}','{class1}','{stu_no}',
         '{entrance_school}','{graduate_time}','{state}','{photo_address}',NOW())
         '''
 uname=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[1]/td[1]").text
 u_sex=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[1]/td[2]").text
#2
 u_birthday=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[2]/td[1]").text
 u_nation=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[2]/td[2]").text
 #3
 u_identified=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[3]/td[1]").text
 u_school_name=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[3]/td[2]").text
 #4
 u_leve=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[4]/td[1]").text
 u_major=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[4]/td[2]").text
 #5
 u_year_=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[5]/td[1]").text
 u_edu_class=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[5]/td[2]").text
 #6
 u_learning=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[6]/td[1]").text
 u_branch_institute= driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[6]/td[2]").text
 #7
 u_department=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[7]/td[1]").text
 u_class=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[7]/td[2]").text
 #8
 u_stu_no=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[8]/td[1]").text
 u_entrance_school=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[8]/td[2]").text
 #9
 u_graduate_time=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[9]/td[1]").text
 u_state=driver.find_element_by_xpath(".//table[@class='mb-table']/tbody/tr[9]/td[2]").text

 driver.get_screenshot_as_file(r"D:\pythonPath\\"+username+".jpg")
 PHaddress ="D:\pythonPath\\"+username+".jpg"
 inser_sql = sql.format(u_name=uname, sex=u_sex, birthday=u_birthday, nation=u_nation, identified=u_identified,
                        school_name=u_school_name, leve=u_leve,major=u_major,year_=u_year_,edu_class=u_edu_class,
                        learning=u_learning,branch_institute=u_branch_institute,department=u_department,class1=u_class,
                        stu_no=u_stu_no,entrance_school=u_entrance_school,graduate_time=u_graduate_time,state=u_state, photo_address=PHaddress)
 print(inser_sql)
 con_mysql(inser_sql)
 driver.close()
 #最后我们可以测试一下
def main():
    username='用户名'
    password='密码'
    login(username, password)
if __name__ =="__main__":
    main()

至此 我们使用webdriver 就可以成功实现登录!如果有什么问题,可以留言沟通

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值