python写爬虫6-selenium的使用

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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值