最近按公司要求,爬取相关网站时,发现没有找到js包的地址,我就采用selenium来爬取信息,相关实战链接:python爬虫实战(一)--------中国作物种质信息网

一、Selenium介绍

  Selenium 是什么?一句话,自动化测试工具。它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Selenium 的插件,那么便可以方便地实现Web界面的测试。换句话说叫 Selenium 支持这些浏览器驱动。Selenium支持多种语言开发,比如 Java,C,Ruby等等,有 Python 吗?那是必须的!安装只要cmd中 pip install selenium 即可。

二、爬虫为什么要用selenium?

 对于一般网站来说scrapy、requests、beautifulsoup等都可以爬取,但是有些信息需要执行js才能显现,而且你肉眼所能看到的基本都能爬取下来,在学习中遇到了,就记录下来方便以后查看。

 webdrive是selenium中一个函数:

 from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('网址')

其中PhantomJS同时可以换成Chrome、Firefox、Ie等等,但是PhantomJS是一个无头的浏览器,运行是不会跳出相应的浏览器,运行相对效率较高。在调试中可以先换成Chrome,方便调试,最后再换成PhantomJS即可。

三、PhantomJS介绍

  PhantomJS是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何你可以在基于webkit浏览器做的事情,它都能做到。它不仅是个隐形的浏览器,提供了诸如CSS选择器、支持Web标准、DOM操作、JSON、HTML5、Canvas、SVG等,同时也提供了处理文件I/O的操作,从而使你可以向操作系统读写文件等。PhantomJS的用处可谓非常广泛,诸如前端无界面自动化测试(需要结合Jasmin)、网络监测、网页截屏等。

  PhantomJS官方地址:http://phantomjs.org/

  PhantomJS官方API:http://phantomjs.org/api/

  PhantomJS官方示例:http://phantomjs.org/examples/

  PhantomJS GitHub:https://github.com/ariya/phantomjs/

四、PhantomJS安装

本人windowns7系统,把下载下来的phantomjs.exe移到你所用python文件夹下的Script中就可以使用了。(下载PhantomJS-2.1.1-windowns.zip链接:http://pan.baidu.com/s/1c8HeBc 密码:2zm4)

小测试:

 from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("http://hotel.qunar.com/")
data = driver.title
print data #输出
【去哪儿酒店】酒店预订, 酒店查询-去哪儿网Qunar.com

五、操作实战

 # -*-coding:utf-8-*-
from selenium import webdriver
import time
import win32api
import re
import win32con
browser = webdriver.PhantomJS()
'''PhantomJS的屏幕截图是滚动底部的,而Chrome没有''' browser.get("http://flight.qunar.com/") #打开去哪儿官网
a=browser.get_screenshot_as_file("E:/Python27/test2.jpg") #屏幕截图 browser.find_element_by_id("searchTypeRnd").click() #点击往返
browser.find_element_by_xpath('//*[@id="dfsForm"]/div[2]/div[1]/div/input').clear() #先清理下输入框,默认是有地方的
browser.find_element_by_xpath('//*[@id="dfsForm"]/div[2]/div[1]/div/input').send_keys(u"北京") #输入起点位置 '''这里涉及到win32api可以参考相关手册----以下是键盘操作'''
time.sleep(0.5)
win32api.keybd_event(108,0,0,0) #按enter键
#按某个键 win32api.keybd_event(键位码,0,0,0)
win32api.keybd_event(108,0,win32con.KEYEVENTF_KEYUP,0)#释放按键
#释放按键 win32api.keybd_event(键位码,0,win32con.KEYEVENTF_KEYUP,0) browser.find_element_by_xpath('//*[@id="dfsForm"]/div[2]/div[2]/div/input').clear()
browser.find_element_by_xpath('//*[@id="dfsForm"]/div[2]/div[2]/div/input').send_keys(u"上海") #输入终点位置
time.sleep(0.5)
win32api.keybd_event(108,0,0,0) #按enter键
win32api.keybd_event(108,0,win32con.KEYEVENTF_KEYUP,0) #释放按键 browser.find_element_by_xpath('//*[@id="fromDate"]').clear()
browser.find_element_by_xpath('//*[@id="fromDate"]').send_keys("2017-04-19") #输入出发时间
#browser.find_element_by_xpath('//*[@id="fromDate"]').click()
browser.find_element_by_xpath('//*[@id="toDate"]').clear()
browser.find_element_by_xpath('//*[@id="toDate"]').send_keys("2017-04-22") #输入返程时间
#browser.find_element_by_xpath('//*[@id="toDate"]').click() '''法二设置地点和时间'''
#browser.find_element_by_name("name").send_keys("北京(BJS)") #设置值
#browser.find_element_by_name("pass").send_keys("上海(SHA)") #设置值
#browser.find_element_by_id("txtAirplaneTime1").send_keys("2016-12-19") #设置值 browser.find_element_by_xpath('//*[@id="dfsForm"]/div[4]/button').click() #点击按钮 提交表单
browser.maximize_window() #最大窗口 '''保存当前网页'''
print(browser.current_url) #当前url
#browser.get("http://www.ly.com/FlightQuery.aspx")#cookie保存在对象中,对需认证页面可直接访问
data=browser.page_source.encode("utf-8","ignore")
fh=open("E:/python27/qun.html","wb")
fh.write(data)
fh.close()
data2=browser.page_source
#print data2
a=browser.get_screenshot_as_file("E:/Python27/test.jpg")
#print(browser.page_source) ''''后续可以抓取一些东西''' browser.quit()

六、在此推荐虫师博客的学习资料

下面会用  selenium + webdriver + python 实现

关系:

  selenium 自动化测试工具 :selnium 1.0 包括:selenium RC 、selenium IDE 、selenium GRID、selenium CORE

  webdriver  google的自动化测试框架(或者说是套规范API)

  webdriver 与seleinum  各有优点,两个团队都认为合并会更牛逼,于是:

  selenium 2.0 = selenium RC + webdriver

  selenium 可以使用多种语言实现:C# , java , python , ruby ....

环境搭建:

selenium + python自动化测试环境搭建

译:selenium webdriver (python)

----------------轻松自动化系列目录-----------

轻松自动化---selenium-webdriver(python) (一)

开始我们的第一个脚本:

  • 熟悉selenium python 代码样式
  • time.sleep()  添加休眠时间
  • print   打印输出信息

轻松自动化---selenium-webdriver(python) (二)

  • 打印URL
  • 将浏览器最大化
  • 设置浏览器固定宽、高
  • 操控浏览器前进、后退

轻松自动化---selenium-webdriver(python) (三)

* 简单对象定位:

  • · id
  • · name
  • · class name
  • · link text
  • · partial link text
  • · tag name
  • · xpath
  • · css selector

轻松自动化---selenium-webdriver(python) (四)

  • 定位一组元素

轻松自动化---selenium-webdriver(python) (五)

  • 层级定位

轻松自动化---selenium-webdriver(python) (六)

操作对象:

  • · click 点击对象
  • · send_keys 在对象上模拟按键输入
  • · clear 清除对象的内容,如果可以的话

WebElement  另一些常用方法:

  • · text  获取该元素的文本
  • · submit  提交表单
  • · get_attribute  获得属性值

轻松自动化---selenium-webdriver(python) (七)

多层框架或窗口的定位:

  • switch_to_frame()
  • switch_to_window()

智能等待:

  • implicitly_wait()

轻松自动化---selenium-webdriver(python) (八)

调用js方法

execute_script(script, *args)

轻松自动化---selenium-webdriver(python) (九)

  • 上传文件

轻松自动化---selenium-webdriver(python) (十)

  • 处理下拉框
  • switch_to_alert()
  • accept()

轻松自动化---selenium-webdriver(python) (十一)

  • 控制滚动条到底部

轻松自动化---selenium-webdriver(python) (十二)

  • l 键盘按键用法
  • l 键盘组合键用法
  • l send_keys() 输入中文运行报错问题

selenium-webdriver(python) (十三) -- cookie处理

  • driver.get_cookies() 获得cookie信息
  • add_cookie(cookie_dict)  向cookie添加会话信息
  • delete_cookie(name)   删除特定(部分)的cookie
  • delete_all_cookies()    删除所有cookie

selenium-webdriver(python) (十四) -- webdriver原理

  • webdriver 原理分析

selenium-webdriver(python) (十五) -- 鼠标事件

  • context_click()  右击
  • double_click()   双击
  • drag_and_drop()  拖动

selenium-webdriver(python) (十六) --unittest 框架

  • 浅析unittest测试框架

作者:今孝
出处:http://www.cnblogs.com/jinxiao-pu
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

参考链接:http://www.cnblogs.com/zzhzhao/p/5380376.html

       http://www.cnblogs.com/BigFishFly/p/6380024.html

python爬虫积累(一)--------selenium+python+PhantomJS的使用的更多相关文章

  1. Python爬虫学习——使用selenium和phantomjs爬取js动态加载的网页

    1.安装selenium pip install selenium Collecting selenium Downloading selenium-3.4.1-py2.py3-none-any.wh ...

  2. python爬虫动态html selenium.webdriver

    python爬虫:利用selenium.webdriver获取渲染之后的页面代码! 1 首先要下载浏览器驱动: 常用的是chromedriver 和phantomjs chromedirver下载地址 ...

  3. Python爬虫之设置selenium webdriver等待

    Python爬虫之设置selenium webdriver等待 ajax技术出现使异步加载方式呈现数据的网站越来越多,当浏览器在加载页面时,页面上的元素可能并不是同时被加载完成,这给定位元素的定位增加 ...

  4. python爬虫积累(一)--------selenium+python+PhantomJS的使用(转)

    阅读目录 一.Selenium介绍 二.爬虫为什么要用selenium? 三.PhantomJS介绍 四.PhantomJS安装 五.操作实战 六.在此推荐虫师博客的学习资料 selenium + p ...

  5. Python爬虫(二十一)_Selenium与PhantomJS

    本章将介绍使用Selenium和PhantomJS两种工具用来加载动态数据,更多内容请参考:Python学习指南 Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试 ...

  6. PYTHON 爬虫笔记七:Selenium库基础用法

    知识点一:Selenium库详解及其基本使用 什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium ...

  7. python爬虫之初始Selenium

    1.初始 Selenium[1]  是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Moz ...

  8. Python爬虫入门教程 60-100 python识别验证码,阿里、腾讯、百度、聚合数据等大公司都这么干

    常见验证码 之前的博客中已经解决了一些常见验证码的问题,但是验证码是层出不穷的,目前解决验证码除了通过常规手段解决以外,还可以通过人工智能领域的深度学习去解决 深度学习?! 无疑对爬虫coder提高了 ...

  9. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

随机推荐

  1. [JXOI2018]游戏 (线性筛,数论)

    [JXOI2018]游戏 \(solution:\) 这一道题的原版题面实在太负能量了,所以用了修改版题面. 这道题只要仔细读题,我们就可以将题目的一些基本性质分析出来:首先我们定义:对于某一类都可以 ...

  2. IE8以下浏览器设置Title的问题

    ie8不支持网页title的如下写法  $('title').text('标题');  $('title').html('标题'); 在ie8中,正确写法: document.title = &quo ...

  3. android 内存泄漏,以及检测方法

    1.为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. 2.内 ...

  4. python内置模块之collections(六)

    前言 collections是Python内建的一个集合模块,提供了许多有用的集合类. 系列文章 python模块分析之random(一) python模块分析之hashlib加密(二) python ...

  5. 『PyTorch』第五弹_深入理解autograd_上:Variable属性方法

    在PyTorch中计算图的特点可总结如下: autograd根据用户对variable的操作构建其计算图.对变量的操作抽象为Function. 对于那些不是任何函数(Function)的输出,由用户创 ...

  6. vim学习、各类插件配置与安装【转】

    转自:https://www.cnblogs.com/forest-wow/p/6916531.html 1. vim学习 vim基础学习:根据网上流行基础文章<简明Vim练级攻略>,进阶 ...

  7. docker在centos7系统镜像下遇到的一些问题

    一.成功安装服务后发现无法启动 报错为:Failed to get D-Bus connection: Operation not permitted 系统为centos7官方版镜像,源和依赖之类的都 ...

  8. centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案

    centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案 整体方案: 环境准备,在备用服务器安装mysql5.5数据库 1.停用生产环境的应用访问 直接修改web的访 ...

  9. 安装cactiez v11对windows和linux系统进行监控

    日常运维中我们需要对服务器的流量.CPU占用.硬盘使用及内存.磁盘IP等进行监控和了解,cactiez是一款基于centos6.4定制安装了常用监控软件的系统,安装简单,功能强大很适合快速部署监控系统 ...

  10. redhat5 设置静态ip

    Last login: Sat Oct 14 16:19:13 2017 # 进入ip凭证文件设置地方 [root@oracle ~]# cd /etc/sysconfig/network-scrip ...