博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax-hook+ selenium抓取带参数的 Ajax 数据
阅读量:2018 次
发布时间:2019-04-28

本文共 1370 字,大约阅读时间需要 4 分钟。

环境

依赖安装

pip install flask-cors flask selenium

安装chromedriver

实现代码

1、hook.js

监听 XMLHttpRequest 请求

// 打开链接,复制代码到这里// https://unpkg.com/ajax-hook@2.0.3/dist/ajaxhook.min.js// https://unpkg.com/axios/dist/axios.min.jsah.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 webdriverimport timebrowser = 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 jsonfrom flask import Flask, request, jsonifyfrom flask_cors import CORSapp = 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)

参考

转载地址:http://tdxxf.baihongyu.com/

你可能感兴趣的文章
MTK socket 小结 2
查看>>
Python log 日志的使用
查看>>
MongoDB备份和恢复 并且转移数据到另一个磁盘
查看>>
勾股数,gcd
查看>>
zoj 2807Electrical Outlets 水题
查看>>
zoj 1406 Jungle Roads 最小生成树
查看>>
zoj 2857 Image Transformation水题
查看>>
zoj 2851 Code Formatter 水题(1)
查看>>
zoj2878 Parking 水题
查看>>
zoj 2883 Shopaholic水题
查看>>
zoj 2947 Abbreviation 水题
查看>>
zoj 2812 Quicksum 水题
查看>>
zoj 2326 Tangled in Cables 最小生成树
查看>>
cugb 1032 登山(子序列)
查看>>
zoj Monkey and Banana (子序列)
查看>>
poj 3278 Catch That Cow BFS
查看>>
zoj 2165 Red and Black (BFS)
查看>>
zoj 1091 Knight Moves (BFS)(情况用循环控制,值得学习啊)
查看>>
zoj 1940 Dungeon Master(BFS)
查看>>
广搜和深搜
查看>>