如何用Python抓取动态页面信息

Python021

如何用Python抓取动态页面信息,第1张

Spynner的简单使用

Spynner的功能十分强大,但是由于本人能力有限,就介绍一下如何显示网页的源码吧。

#! /usr/bin/python

#-*-coding: utf-8 -*-

import spynner

browser = spynner.Browser()

#创建一个浏览器对象

browser.hide()

#打开浏览器,并隐藏。

browser.load("http://www.baidu.com")

#browser 类中有一个类方法load,可以用webkit加载你想加载的页面信息。

#load(是你想要加载的网址的字符串形式)

print browser.html.encode("utf-8")

#browser 类中有一个成员是html,是页面进过处理后的源码的字符串.

#将其转码为UTF-8编码

open("Test.html", 'w+').write(browser.html.encode("utf-8"))

#你也可以将它写到文件中,用浏览器打开。

browser.close()

#关闭该浏览器

通过这个程序,就可以比较容易的显示webkit处理的页面HTML源码了。

AJAX(Asynchronouse JavaScript And XML:异步JavaScript和XML)通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新,这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行局部更新。传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。

因为传统的网页在传输数据格式方面,使用的是 XML 语法,因此叫做 AJAX ,其实现在数据交互基本上都是使用 JSON 。使用AJAX加载的数据,即使使用了JS将数据渲染到了浏览器中,在 右键->查看网页源代码 还是不能看到通过ajax加载的数据,只能看到使用这个url加载的html代码。

法1:直接分析ajax调用的接口。然后通过代码请求这个接口。

法2:使用Selenium+chromedriver模拟浏览器行为获取数据。

Selenium 相当于是一个机器人。可以模拟人类在浏览器上的一些行为,自动处理浏览器上的一些行为,比如点击,填充数据,删除cookie等。 chromedriver 是一个驱动 Chrome 浏览器的驱动程序,使用他才可以驱动浏览器。当然针对不同的浏览器有不同的driver。以下列出了不同浏览器及其对应的driver:

现在以一个简单的获取百度首页的例子来讲下 Selenium 和 chromedriver 如何快速入门:

参考:Selenium的使用

直接直接分析ajax调用的接口爬取

selenium结合lxml爬取