先导入webdriver子模块
from selenium import webdriver
获得浏览器的session,浏览器用Firefox、Chrome、IE等都可以,这里以Firefox为例
browser = webdriver.Firefox()
加载页面,url自己指定一个合法的字符串即可
browser.get(url)
获得了session对象后,要定位元素,webdriver提供了一系列的元素定位方法,常用的有以下几种方式:
id
name
class-name
link
text
partial
link
text
tag
name
xpath
cssselector
比如通过id定位,返回所有元素组成的list,lis=borwser.find_elements_by_id_name('kw'')
通过class-name定位,lis=find_elements_by_class_name('title_1')
更详细的定位方式可以参考selenium webdriver(python)教程的第三章-定位方式部分(第一版可在百
度文库阅览)
结合正则表达式过滤相关信息
定位后的元素有些是不想要的,用正则过滤掉即可,比如我想只提取英文字符(包括0-9),建立下面
的正则
pa=re.compile(r'\w+')
for u in lis:
en=pa.findall(u.lis)
print en
关闭会话
当执行完抓取操作后,必须关闭session,不然让它一直占内存会影响机器其他进程的运行
browser.close()或者browser.quit()都可以关闭session,前者只是关闭当前的session,浏览器的webdrive
r不关闭,后者则是包括webdriver这些东西全部shut down
加入异常处理
这是有必要的,因为有时会获得session失败,因此要把上述语句块放入try里面,然后exception处理异常
except NoSuchElementException:
assert 0, "can't find element"
4. 代码实现