在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")

更多的教程:大家來編程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM