Selenium爬虫

一、简介

selenium

一个用于Web应用自动化程序测试的工具,模拟用户操作浏览器。

两种模式:

  1. 支持通过驱动真实浏览器(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)
  2. 支持通过驱动无界面浏览器(HtmlUnit,PhantomJs)
PhantomJS

一个基于 WebKit(WebKit是一个开源的浏览器引擎,Chrome,Safari就是用的这个浏览器引擎) 的服务器端 JavaScript API,

应用场景:

  1. 无需浏览器的 Web 测试
  2. 页面访问自动化,屏幕捕获
  3. 网络监控

二、安装

selenium模块
1、源码安装
wget https://files.pythonhosted.org/packages/d1/46/16760572785e62262da64b2624acf3b51e50a1581b14aea17aa61e145309/selenium-2.48.0.tar.gz

解压到\Python27\Lib\site-packages

2、pip安装
pip install selenium

#指定版本安装
pip install selenium==2.48.0

#查看安装版本
pip show selenium

#卸载模块
pip uninstall selenium

#安装过高版本报错
UserWarning: Selenium support for PhantomJS has been deprecated,
    please use headless versions of Chrome or Firefox instead 
warnings.warn('Selenium support for PhantomJS has been deprecated, 
please use headless '
解决:卸载重新指定2.48.0版本安装
PhantomJS
1、源码安装
http://phantomjs.org/download.html  
解压到C:\Python27\Scripts,添加环境变量

2、pip安装
pip install PhantomJs   

定位页面元素

XPath: XML的查询语言
开头是一个斜线(/)代表这是绝对路径
开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来
使用星号(Wildcards,*)可以选择未知的元素
属性都是以@开头

<catalog>
    <cd country="UK">
         <title>Hide your heart</title>
         <artist>Bonnie Tyler</artist>
         <price>9.90</price>
    </cd>
    <cd country="USA">
         <title>Greatest Hits</title>
         <artist>Dolly Parton</artist>
         <price>9.90</price>
    </cd>
</catalog>  

选catalog底下的cd中所有price元素可以用: /catalog/cd/price 
文件中的所有元素: //*
文件中所有叫做country的属性: //@country
模拟百度搜索
from selenium import webdriver
obj = webdriver.PhantomJS(executable_path="D:\Python27\Scripts\phantomjs.exe")
obj.set_page_load_timeout(5)
try:
    obj.get('http://www.baidu.com')
    print obj.find_element_by_id("cp").text  # 获取元素的文本信息
    obj.find_element_by_id('kw').clear()              #用于清除输入框的内容
    obj.find_element_by_id('kw').send_keys('Hello')  #在输入框内输入Hello
    obj.find_element_by_id('su').click()              #用于点击按钮
    obj.find_element_by_id('su').submit()             #用于提交表单内容

except Exception as e:
    print e
Python编码问题
cd /usr/lib/python2.7/site-packages/
cat sitecustomize.py
# encoding=utf8 
import sys

reload(sys) 
sys.setdefaultencoding('utf8')

此时重启python解释器,执行sys.getdefaultencoding(),
发现编码已经被设置为utf8的了,多次重启之后,效果相同,
这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,
而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

参考

https://www.jianshu.com/p/45f299f9bf7c

http://www.cnblogs.com/luxiaojun/p/6144748.html

XPath http://www.cnblogs.com/hyddd/archive/2009/05/22/1487332.html

python编码问题 http://www.cnblogs.com/kevingrace/p/5893121.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值