这次是在Ubuntu16.04上进行的,使用selenium之前,你先得将Firefox或者Chrome或者IE的驱动放进/usr/bin里面,我用的是Ubuntu自带的Firefox,然后Firefox的驱动在这里下 Mozilla Github这里
64位的就选64位,32位的Linux应该很少了吧,然后解压cp进/usr/bin
现在网上的教程基本都是你抄我的,我抄你的,百度出来的都是千篇一律的,没啥价值,所以同学百度可以,要适度哦
这是python-selenium的官方文档地址python-selenium
安装selenium:
sudo pip install selenium官方文档呢只是大概的讲了一下,其实selenium可没有他们说的那么简单
这一步呢是新建一个空白的网页窗口
我们先导入模块,这一步很重要
from selenium import webdriver然后使用webdriver打开Firefox
driver = webdriver.Firefox()Chrome么就
driver = webdriver.Chrome()不过一样的你都得下他们的驱动放进/usr/bin
到这里还是不会出来web浏览器窗口的 然后我们打开一个网页,这里以淘宝为掩饰
driver.get("https://www.taobao.com")然后这个时候,就会自动用Firefox打开了淘宝的页面
第一步完成
我们可以看一下淘宝的title是什么
title = driver.title s = title.encode("utf-8") print s下面是我当时操作时候的输入输出
>>> driver = webdriver.Firefox() >>> driver.get("https://www.taobao.com") >>> title = driver.title >>> title.encode("utf-8") '\xe6\xb7\x98\xe5\xae\x9d\xe7\xbd\x91 - \xe6\xb7\x98\xef\xbc\x81\xe6\x88\x91\xe5\x96\x9c\xe6\xac\xa2' >>> print title 淘宝网 - 淘!我喜欢用selenium最重要的是要记得解码,因为title返回的Unicode,然后是没法输出中文的,所以这里加了一个解码,这是在python2.x中,3.x好像方法换了
这是返回当前所在网页的URL的
>>> driver.current_url u'https://www.taobao.com/' >>>这是关闭当前页面的,比如你一个Firefox打开了很多页面,这是关闭当前页面的,要想关闭打开的Firefox,用方法3
这就是将Firefox直接关闭
前面不是说,你打开了很多页面吗,这是获取你当前页面handle的
>>> driver.current_window_handle u'2147483649' >>>一般就是用这个来定位当前的页面,然后在不同页面之间做切换,怎么切换,看下面
上面不是得到一个window handle了吗,你可以从最后介绍那个10.函数返回的当前handle列表里面选择一个handle,然后把他传进参数里面,driver就可以切换到那个页面
这个不用说了吧,打开一个网页
返回网页的title,记得解码
获得当前页面的cookies
>>> c = driver.get_cookies() >>> c [{u'domain': u'.taobao.com', u'secure': False, u'value': u'cn', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'thw'}, {u'domain': u'www.taobao.com', u'secure': False, u'value': u'dw:1920&dh:950&pw:1920&ph:950&ist:0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'_med'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'v'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'1caee2ae81e41ea28739ca4d84e3770d', u'expiry': None, u'path': u'/', u'httpOnly': True, u'name': u'cookie2'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'193cd88d532ec07d17c993b706481253', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u't'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'B4rGEMrmAEECAXBziEByBkK1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'cna'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ara22fu6y3-0uopHvyoKNvjaBue41/oR', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'l'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ap2dqHwZmQPXl30vUxrYiXPurXBcstEMj8zaxV9i2fQjFr1IJwrh3GsEJrDv', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'isg'}, {u'domain': u'.taobao.com', u'secure': False, u'value': u'ci=-1_1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'mt'}] >>> type(c) <type 'list'> >>> for i in c: ... print i ... {u'domain': u'.taobao.com', u'secure': False, u'value': u'cn', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'thw'} {u'domain': u'www.taobao.com', u'secure': False, u'value': u'dw:1920&dh:950&pw:1920&ph:950&ist:0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'_med'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'0', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'v'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'1caee2ae81e41ea28739ca4d84e3770d', u'expiry': None, u'path': u'/', u'httpOnly': True, u'name': u'cookie2'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'193cd88d532ec07d17c993b706481253', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u't'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'B4rGEMrmAEECAXBziEByBkK1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'cna'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ara22fu6y3-0uopHvyoKNvjaBue41/oR', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'l'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'Ap2dqHwZmQPXl30vUxrYiXPurXBcstEMj8zaxV9i2fQjFr1IJwrh3GsEJrDv', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'isg'} {u'domain': u'.taobao.com', u'secure': False, u'value': u'ci=-1_1', u'expiry': None, u'path': u'/', u'httpOnly': False, u'name': u'mt'}返回的是用list包起来的dict
这是driver等待结果多少秒,如果没有出现,就不等了,这个一般是用在用css selector或者xpath选取元素时候以免等待时间过长用的
这是返回用selenium打开的Firefox里面现在有多少个子页面的,每个页面对应一个handle
>>> driver.window_handles [u'2147483649', u'2147483685']这个说明我现在打开了两个页面,一般你第一个打开的页面会放在list[0]里,也就是第一个,然后依次打开,依次的append进去list里面
其他的在官方文档里都有介绍,selenium最强大的功能还是find_element系列函数,这个官方文档有详细介绍,抓页面的时候简直是神器,好了就说这么多,有关更多selenium的问题,邮件联系我。
super_big_hero@sina.com
原文地址 http://write.blog.csdn.net/mdeditor#!postId=53431946