ajax-hook+ selenium抓取带参数的 Ajax 数据

简介: ajax-hook+ selenium抓取带参数的 Ajax 数据

环境

依赖安装

pip install flask-cors flask selenium

安装chromedriver


mac下安装selenium+phantomjs+chromedriver


实现代码

1、hook.js

监听 XMLHttpRequest 请求


// 打开链接,复制代码到这里
// https://unpkg.com/ajax-hook@2.0.3/dist/ajaxhook.min.js
// https://unpkg.com/axios/dist/axios.min.js
ah.proxy({
  //请求成功后进入
  onResponse: (response, handler) => {
    if (response.config.url.startsWith('/api/movie')) {
      axios.post('http://localhost:5000/receiver/movie', {
        url: window.location.href,
        data: response.response
      })
      console.log(response.response)
      handler.next(response)
    }
  }
})

2、main.py


驱动chrome


# -*- coding: utf-8 -*-
from selenium import webdriver
import time
browser = webdriver.Chrome()
browser.get('https://dynamic2.scrape.center/')
browser.execute_script(open('hook.js').read())
time.sleep(2)
for index in range(3):
    print('current page', index)
    btn_next = browser.find_element_by_css_selector('.btn-next')
    btn_next.click()
    time.sleep(2)
browser.close()
browser.quit()

3、server.py


接收数据的服务,可以进一步将数据存入数据库


# -*- coding: utf-8 -*-
import json
from flask import Flask, request, jsonify
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/receiver/movie', methods=['POST'])
def receive():
    content = json.loads(request.data)
    print(content)
    # to something
    return jsonify({'status': True})
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=True)
相关文章
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
748 0
|
数据采集 Web App开发 XML
爬虫进阶:Selenium与Ajax的无缝集成
爬虫进阶:Selenium与Ajax的无缝集成
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
318 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
Web App开发 数据采集 前端开发
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
|
XML JSON 前端开发
ajax中各个参数的含义是什么?
实际上,jQuery的 `$.ajax()` 方法支持比这个列表更多的参数,但这些是最常用的。请根据您的特定需求灵活配置这些参数。了解每个参数的作用和可接受的值对于有效地使用AJAX非常关键,能够帮助您建立健壮的交互式网页应用。
374 0
|
XML JSON 前端开发
ajax中各个参数的含义是什么?
ajax中各个参数的含义是什么?
|
前端开发 JavaScript
|
存储 移动开发 JavaScript
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
|
XML JSON 前端开发
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
314 0
|
Web App开发 前端开发 JavaScript
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
348 0