python + webdriver

2025-05-16 01:29:54 2014世界杯梅西

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 就可以成功实现登录!如果有什么问题,可以留言沟通

上海大众汽车旗下朗逸的操控性能究竟好不好
潍坊监狱