python + webdriver
来源:互联网 发布:知乎二战德国石油 编辑:程序博客网 时间:2024/06/06 02:01
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 bottleimport pymysqlfrom bottle import route, runfrom selenium import webdriverimport 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 就可以成功实现登录!如果有什么问题,可以留言沟通
阅读全文
2 0
- python + webdriver
- webdriver--Python
- selenium-webdriver(python) (一)
- selenium-webdriver(python) (二)
- selenium-webdriver(python) (三)
- selenium-webdriver(python) (四)
- selenium-webdriver(python) (五)
- selenium-webdriver(python) (六)
- selenium-webdriver(python) (七)
- selenium-webdriver(python) (八)
- selenium-webdriver(python) (九)
- python remote webdriver
- webdriver-python常用api
- python webdriver测试报告
- python webdriver测试报告
- python+webdriver环境搭建
- python webdriver API
- Selenium WebDriver + Python 环境
- AI十大高危行业
- Android greenDao 初识运用
- QT PC Tool
- x264源代码简单分析:宏块分析(Analysis)部分-帧内宏块(Intra)
- AI发展受影响的高危岗位
- python + webdriver
- 器——Eclipse开发JAVA中如何Debug
- datasnap回调演示
- Java并发之Semaphore
- 1094. The Largest Generation (25)
- Softmax 函数的特点和作用
- uva12563 劲歌金曲
- 嵌套循环
- hihoCoder 1407 后缀数组二·重复旋律2 && POJ 1743 Musical Theme(最长不可重叠重复子串问题)