首先,将自定义的监听xhr事件的方法override原本的XMLHttpRequest(from:分享JavaScript监听全部Ajax请求事件的方法)

(function () {

if (typeof window.CustomEvent === "function") return false;

function CustomEvent(event, params) {

params = params || {

bubbles: false,

cancelable: false,

detail: undefined

};

var evt = document.createEvent('CustomEvent');

evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);

return evt;

}

CustomEvent.prototype = window.Event.prototype;

window.CustomEvent = CustomEvent;

})();

(function () {

function ajaxEventTrigger(event) {

var ajaxEvent = new CustomEvent(event, {

detail: this

});

window.dispatchEvent(ajaxEvent);

}

var oldXHR = window.XMLHttpRequest;

function newXHR() {

var realXHR = new oldXHR();

realXHR.addEventListener('abort', function () {

ajaxEventTrigger.call(this, 'ajaxAbort');

}, false);

realXHR.addEventListener('error', function () {

ajaxEventTrigger.call(this, 'ajaxError');

}, false);

realXHR.addEventListener('load', function () {

ajaxEventTrigger.call(this, 'ajaxLoad');

}, false);

realXHR.addEventListener('loadstart', function () {

ajaxEventTrigger.call(this, 'ajaxLoadStart');

}, false);

realXHR.addEventListener('progress', function () {

ajaxEventTrigger.call(this, 'ajaxProgress');

}, false);

realXHR.addEventListener('timeout', function () {

ajaxEventTrigger.call(this, 'ajaxTimeout');

}, false);

realXHR.addEventListener('loadend', function () {

ajaxEventTrigger.call(this, 'ajaxLoadEnd');

}, false);

realXHR.addEventListener('readystatechange', function () {

ajaxEventTrigger.call(this, 'ajaxReadyStateChange');

}, false);

return realXHR;

}

window.XMLHttpRequest = newXHR;

})();

然后使用上面自定义的方法进行监听,筛选出所需要的接口并拿到返回的数据,再发送数据到自己的接口进行存储等操作。

window.addEventListener('ajaxLoadEnd', function (e) {

let { response, responseURL } = e.detail

if (responseURL.includes('save_lianjia_sq')) {

console.log(response)

}

if(!/.*map\/bubblelist.*groupType\=bizcircle.*/.test(responseURL)) return;

let cityCode = responseURL.match(/(?<=cityId\=)\d{6}/g)[0]

let resInfo = JSON.parse(response)

var xhrMy = new XMLHttpRequest()

xhrMy.open("post", "http://127.0.0.1:8889/transfer/spider/save_lianjia_sq")

xhrMy.setRequestHeader("Content-type", "application/json")

xhrMy.send(JSON.stringify({

activeCity: cityCode,

activeSq: resInfo.data.bubbleList

}))

});

最终使用方法:打开链家地图找房,f12然后输入上方所有js代码,将地图缩放到显示商圈的那一级,拖动到相应区域,该区域的商圈信息就会被发送到指定的接口了。

PS:通过这种在控制台注入js的方法还可以实现一些其他有趣的功能。

仿链家地图找房_愉快滴抓取链家地图找房中的商圈相关推荐

  1. python 从excel中抓取数据_使用Python抓取美团数据存于Excel中

    0.程序是针对美团中的美食部分数据按好评排序采集. 要抓取保存的数据为: 商家名类型  地理位置 评论人数  均价  最低价格 1.首先编写网页数据采集函数,使用request采集网页源码,具体实现如 ...

  2. python找房源_python抓取链家房源信息(二)

    试着用scrapy将之前写的抓取链家网信息的重新写了写 然后先是用了第一页的网页作为测试,调试代码,然后发现总是抓取的时候遇见了 类似于这样的问题,并且抓取不到信息 2017-03-28 17:52: ...

  3. python爬虫之scrapy初试与抓取链家成交房产记录

    接上一篇文章,本机安装好python之后和scrapy之后,我们开始学习使用scrapy创建爬虫程序. 今天先来点简单的,不那么复杂,先看看抓取链家网里面的房价信息. 首先使用CMD命令行进入F盘创建 ...

  4. Python爬虫三:抓取链家已成交二手房信息(58W数据)

    环境:Windows7+python3.6+Pycharm2017 目标:抓取链家北京地区已成交二手房信息(无需登录),如下图,户型.朝向.成交时间价格等,保存到csv.最后一共抓取约58W数据,程序 ...

  5. 链家网开源java_异步协程爬取链家租房信息

    异步协程抓取链家数据+pandas写入csv import asyncio import aiohttp import pandas from bs4 import BeautifulSoup fro ...

  6. 仿链家地图找房_全网稀缺,完整链家地图找房的实现(一)

    前一段时间我应公司的需求开发了类似链家地图找房的功能,然而我发现现在市面上,对于链家地图找房功能的完整实现相关的文章还是比较稀缺的,亦或是功能还不够完善,出于这个方面,我觉得把自己对于链家地图找房功能 ...

  7. python爬房源信息_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  8. python关于二手房的课程论文_基于python爬取链家二手房信息代码示例

    基本环境配置 python 3.6 pycharm requests parsel time 相关模块pip安装即可 确定目标网页数据 哦豁,这个价格..................看到都觉得脑阔 ...

  9. python 爬取链家数据_用python爬取链家网的二手房信息

    题外话:这几天用python做题,算是有头有尾地完成了.这两天会抽空把我的思路和方法,还有代码贴出来,供python的初学者参考.我python的实战经历不多,所以代码也是简单易懂的那种.当然过程中还 ...

  10. python3爬虫抓取链家上海租房信息

    环境:win10,anaconda3(python3.5) 爬取对象网站:链家上海租房 方法一:利用requests获取网页信息,再利用正则提取数据,并将结果保存到csv文件. 代码地址:代码 抓取到 ...

最新文章

  1. day05 Spring中自定义注解的用处-之获取自定义的Servie
  2. 剖析疫情环境下的国内云市场:大势所趋,正是大展拳脚的好时机!
  3. leetcode--Rotate List
  4. 从零手动实现简易Tomcat
  5. Acrobat Pro DC 教程,如何使用密码保护 PDF 文件?
  6. Android自动化测试之MonkeyRunner使用
  7. JDK动态代理与CGLIB的区别
  8. vassistx插件
  9. cmd 复制文件命令copy 复制目录树命令xcopy
  10. linux aria2安装路径,Aria2 Linux 完整安装及使用教程
  11. cannot set options after executing query
  12. C语言getc函数没错不管用,对比C语言中getc()函数和ungetc()函数的使用
  13. Vue全家桶打造自适应 web 音乐播放器
  14. linux修改分区自检,linux tune2fs命令取消大分区开机自检
  15. java题目练习笔记,java 20道、数量关系8道、判断推理8道、智力题8道
  16. 20154312 曾林 EXP7 网络欺诈防范
  17. Wifi P2p技术研究
  18. AIX pv vg lv fs 文件系统
  19. 用爬虫批量采集阿里巴巴1688商品数据
  20. Java 由今天往前推7天怎么算

热门文章

  1. PS 画笔工具与文字工具
  2. php soap wsse,改变xmlns:wsse命名空间在使用Python Zeep的SOAP请求中
  3. ubuntu如何打拼音
  4. 微信公众号软件安装管家所有软件插件打包
  5. NoWritableEnvsDirError: No writeable envs directories configured.
  6. 利用BigDecimal类巧妙处理Double类型精度丢失
  7. 个推大数据:3月线上消费率先恢复,在线购物APP迎来春天
  8. 3dMax2020 渲染后保存图片时卡住解决方法
  9. 【黑盒测试用例设计方法5】正交试验法及其示例
  10. 地图编辑器怎样炼成的