python抓取动态网页(爬虫抓取数据时有些数据是动态数据,js动态加载的)

优采云 发布时间: 2021-10-07 16:37

  python抓取动态网页(爬虫抓取数据时有些数据是动态数据,js动态加载的)

  爬虫抓取数据时,有些数据是动态的。比如动态加载js。如果用普通的urllib2抓取数据,是找不到相关数据的。这是爬虫初学者在使用过程中最可能出现的情况。,显然浏览器中有相应的信息,但是python爬取的网页中却缺少相应的信息。这通常是因为网页使用js异步加载数据,动态显示。处理这种情况的一种方法是找到对应的js接口,但有时这种情况是非常少见的,因为js的调用参数也被解析了,有的参数也被加密了,还进行了解密;另一种方式是调用python Browser,控制浏览器返回相应信息,

  安装硒

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

  将火狐升级到最新版本

  下载地址:根据自己的电脑,下载win64位;

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

  可以相应地研究硒文档。

  使用 BeautifulSoup 进行 html 解析

  如果你还不知道BeautifulSoup,可以参考这个文章

  找到html后,可以使用BeautifulSoup来解析。

  from bs4 import BeautifulSoup

bs = BeautifulSoup(browser.page_source, "lxml")

  更多教程:go2coding

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线