在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫

爬虫抓取数据时有些数据是动态数据,例如是用js动态加载的,使用普通的urllib2 抓取数据是找不到相关数据的,这是爬虫初学者在使用的过程中,最容易发生的情况,明明在浏览器里有相应的信息,但是在python抓取的网页中缺少了对应的信息,这通常是网页使用的是js异步加载数据,在动态显示出来。一种处理方式是找出相应的js接口,但是有时这是非常难得,因为还的分析js的调用参数,而有些参数是有加密的,还的进行解密操作;另一种出来方式是python调用浏览器,控制浏览器返回相应的信息,这也是本文要介绍的selenium

安装selenium

在python下安装selenium,命令:

pip install -U selenium

测试是否成功:

#!/usr/bin/python
#coding=utf-8

"""
start python 项目
"""

from selenium import webdriver


browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.baidu.com") # Load page
print browser.page_source

虽然selenium 安装成功了,但是还是会报错:

selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

这是因为:

使用pip安装selenium,默认安装的是最新版本的selenium,使用pip list查了一下我的selenium版本,是3.4.2的,firefox版本,是43.0.1的,selenium 3.x开始,webdriver/firefox/webdriver.py的__init__中,executable_path=“geckodriver”;而2.x是executable_path=“wires”

把firefox升级到最新版本

下载地址:https://github.com/mozilla/geckodriver/releases,根据自己的电脑,下载的win64位的;

在firefox的安装目录下,解压geckodriver,然后将该路径添加到path环境变量下。

selenium 的文档在 http://selenium-python.readthedocs.io/api.html 下可进行相应的研究。

使用BeautifulSoup进行html的解析

如果对BeautifulSoup 还不了解的话,可以参看这篇文章 http://www.bugingcode.com/python_start/ex12.html

找到了得到了html后使用 BeautifulSoup可以进行解析。

from bs4 import BeautifulSoup
bs = BeautifulSoup(browser.page_source, "lxml")

更多的教程:go2coding

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

go2coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值