您的位置:首页 > 编程语言 > Python开发

python写爬虫6-selenium的使用

2017-02-16 15:34 471 查看

python写爬虫6-selenium的使用

目前,前端技术比较火热。各种前端技术、框架层出不穷。大部分站点的数据都是异步动态加载,相比获取静态内容,要抓取动态内容稍微麻烦点

常用的两种抓取动态网页数据的方法:

1.借助Firebug等浏览工具,分析请求数据,获得数据接口地址。然后直接动态改变接口参数,获取json格式的数据。

2.使用浏览器渲染引擎触发javascript事件,借助工具WebKit,Selenium

借助WebKit,我们可以自定义浏览器渲染引擎,这样就能完全控制想要执行的行为,如果不需要这么灵活,那可借助Selenium,它提供了使浏览器自动化的API接口,本文简单介绍Selenium的使用

环境

Mac

python2.7

selenium3.0.2

firefox51.0.1

1.需求

浏览器自动搜索北京赶集网 ‘亦庄’附近的租房信息

2.安装selenium

pip  install  selenium  (默认安装最新版,我的是3.0.2)


现在直接调用selenium使用的话,会爆错,且不能调动浏览器;stackoverflow.com有网友说用2.53.2(具体版本记不清了),这个版本能调起浏览器,但仍会爆错,接着浏览器自动关闭。所以,还是直接用版本3吧。具体解决方法下面会讲到

3.selenium依赖项

下载geckodriver

我下载的是geckodriver-v0.13.0-macos.tar.gz,将解压后的文件放在你指定的目录下,我放在了桌面上,如下图:



下载地址 https://github.com/mozilla/geckodriver/releases

参考https://www.zhihu.com/question/49568096

4.编写代码

以北京赶集网为例:http://bj.ganji.com/fang1/

分析此页面:



#!/usr/bin/env python
# -*- coding: utf-8 -*-

from selenium import webdriver
import time
dr = webdriver.Firefox(executable_path = '/Users/xxx/desktop/geckodriver')
print 'Browser will open.'
dr.get('http://bj.ganji.com/fang1/')
dr.implicitly_wait(5)  # 5s内如果页面没有加载出这个控件,将抛出异常
dr.find_element_by_id('search_keyword').send_keys(u'亦庄')
dr.implicitly_wait(5)
dr.find_element_by_id('search_button').click()  # 模拟点击

time.sleep(5)
dr.quit()
print 'Browser is close'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: