zoukankan      html  css  js  c++  java
  • 在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")
    

    更多的教程:大家来编程

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    网页设计中颜色的搭配
    CSS HACK:全面兼容IE6/IE7/IE8/FF的CSS HACK
    UVa 1326 Jurassic Remains
    UVa 10340 All in All
    UVa 673 Parentheses Balance
    UVa 442 Matrix Chain Multiplication
    UVa 10970 Big Chocolate
    UVa 679 Dropping Balls
    UVa 133 The Dole Queue
  • 原文地址:https://www.cnblogs.com/bugingcode/p/8297665.html
Copyright © 2011-2022 走看看