在python中,selenium完全可以模拟人对浏览器的操作,对动态数据进行获取,动态数据是由代码生成,在页面初始化的过程中无法正常获取,但是,通过selenium却可获取,但是有些数据必须要登录之后才能获取,例如,好友列表、评论。消费记录等等...登陆以后获取cookie,才能进行以下操作,但前提是有账号密码方可实现selenium代替登录。
selenium的特点是:
1.程序控制浏览器进行操作
2.在程序控制浏览器进行操作的时候,速度会非常慢,因此也要谨慎使用selenium(或者设置延时登录 time.sleep(3))
3.在使用sellenium的时候控制浏览器的时候,需要下载浏览器对应的驱动程序
4.要使用selenium的时候,要时刻注意selenium和浏览器之间的关系
对selenium的安装进行步骤操作:
1.在终端打印 pip install selenium
2.在浏览器搜索 geckodriver,获取下载地址https://github.com/mozilla/geckodriver/releases,打开这个网址后
在看到这个页面时,我们选择3.76M那个或者是这个压缩包 geckodriver-v0.21.0-win64.zip,点击下载后,
我们双击压缩包将压缩包解压到桌面。
在浏览器输入chromedriver,我们点击,下载chromedriver地址 - ChromeDriver Mirror
在打开之后是这样的一个图:
我们选择最新版本点击进入,这个图是2.41那个,进去之后是一个新页面,如下:
点击32位的进行下载,将压缩包双击压缩到桌面,将以上两个都放到桌面后,我们打开anacoda所在位置,打开scrips文件夹,将桌面的这两个解压后的exe 复制到里面,关闭pycharm,然后重新打开即可;
在pycharm内我来分析下最基本的操作,
首先,我们导入selenium,然后进行一些其他操作;
from selenium import webdriver
driver = webdriver,Fixfox()(使用网络驱动运行火狐浏览器)
driver.get('http://www.baidu.com')(通过驱动来执行指定的网页)
# selenium 提供了找到元素的方法find_element_by_XXXX,以下为实例,如果只是想对这个元素进行查找,定位 建议使用,xpath或者css_selecotor#,find 找到 element元素;节点;标签 by 通过
通过id来找
driver.find_element_by_id('指定id').send_keys('在搜索栏输入的内容,要是英文')
通过name来查找
drvier.find_element_by_name('wd').send_keys('csdn')
unicode如果后面有中文,那么前面要加个u
driver.find_element_by_class_name('s_ipt').send_keys(u'中国')
通过标签名
driver,.find_element_by_tag_name(‘input’)
selector 选择器 #id .类名
driver.find_element_by_css_selector('#kw')
通过xpath语法定位一个元素
driver.find_element_by_xpath('//form[@id="form"]/span/input[@id="kw"]')
link 连接
driver.find_element_by_link_text('贴吧')
driver.close()(这个最好加上,有开始就有结束)
2.模拟登陆 美食杰
from selenium import webdriver
import time
driver = webdriver.Firefox()
drivrt.get('登录页面的网址')
time.sleep(3)(添加休眠时间,减少出错率)
driver,find_element_by_name('nameuser').send_keys('[email protected]')
driver.find_element_by_name('password').send_keys('542999')
这是点击登录那个按钮的操作
driver.find_element_by_xpath('//div//[@class="nl_loginitem"]/input[@class="submit"]').click()