【爬虫】5.5 Selenium 爬取Ajax网页数据

目录 

AJAX 简介

任务目标

创建Ajax网站

创建服务器程序

编写爬虫程序


AJAX 简介

        AJAX(Asynchronous JavaScript And XML,异步 JavaScript 及 XML)

  1. Asynchronous 一种创建交互式快速动态网页应用的网页开发技术
  2. 通过在后台与服务器进行少量数据交换,无需重新加载整个网页的情况下,能够异步更新部分网页的技术。
  3. AJAX是一种新的技术组合,即基于因特网标准,组合以下技术:
  • XMLHttpRequest 对象(与服务器异步交互数据)
  • JavaScript/DOM(显示/取回信息)
  • CSS(设置数据的样式)
  • XML(常用作数据传输的格式)

【爬虫】5.5 Selenium 爬取Ajax网页数据_第1张图片


任务目标

  1. 现在的网页中大量使用了Ajax技术,通过JavaScript在客户端向服务器发出请求,服务器返回数据给客户端,客户端再把数据展现出来,这样做可以减少网页的闪动, 让用户有更好的体验。
  2. 我们先设计一个这样的网页,然后使用 Selenium 编写爬虫程序爬取网页的数据。

创建Ajax网站

phone.html 如下:

注:phone.html 文件要位于 templates 这个目录下




    
    
    
    Document


选择品牌

创建服务器程序

服务器server.py程序如下:

import flask
import json

app = flask.Flask(__name__)


@app.route("/")
def index():
    return flask.render_template("phone.html")


@app.route("/phones")
def getPhones():
    mark = flask.request.values.get("mark")
    phones = []
    if mark == "华为":
        phones.append({"model": "P9", "mark": "华为", "price": 3800})
        phones.append({"model": "P10", "mark": "华为", "price": 4000})
    elif mark == "苹果":
        phones.append({"model": "iPhone5", "mark": "苹果", "price": 5800})
        phones.append({"model": "iPhone6", "mark": "苹果", "price": 6800})
    elif mark == "三星":
        phones.append({"model": "Galaxy A9", "price": 2800})
    s = json.dumps({"phones": phones})  # python对象转化为json字符串
    return s


app.run()

网站结果如下:
 

【爬虫】5.5 Selenium 爬取Ajax网页数据_第2张图片


编写爬虫程序

(1) 创建一个浏览器对象driver,使用这个driver对象模拟浏览器。

(2) 访问http://127.0.0.1:5000网站,爬取第一个页面的手机数据。

(3) 从第一个页面中获取