Giter Club home page Giter Club logo

58housesearch's Introduction

License: LGPL v3

微信小程序【地图搜租房】

  • 关注【人生删除指南】微信公众号体验
  • 小程序中搜索“地图搜租房”
  • 小广告:欢迎使用我的邀请码【QZSV60XC】注册GPT2077,立即获得30W Token奖励(GPT4、3.5模型通用)。点击链接注册
  • PDF 工具

这是什么? 爬虫+地图驱动的租房信息汇总平台

  • 爬虫全天不间断获取公开租房信息,汇总处理分析后落地到数据库中.

  • 使用高德地图 API 直接在地图上展示房源位置,方便查看租房地理位置,同时提供住址到公司的路线计算(公交+地图 or 步行导航)以及预估耗时.

  • 通过实时爬虫获取公开租房信息,直接在高德地图上直观展示房源位置+基础信息,同时提供住址到公司的路线计算(公交+地图 or 步行导航),已实现【豆瓣租房小组】、【Zuber 合租】、【蘑菇租房】、【小红书】、【贝壳租房】、【房天下】、【上海互助租房】等房源信息数据爬取,部分房源价格支持筛选功能。

  • 支持个人收藏房源信息,以便筛选自己合适的房子.

项目代码介绍

  • vue.js 冻爷Erane 已全部完成

感谢各位 dalao 鼎力支持(排名不分前后)

58housesearch's People

Contributors

codeforcsharp avatar dependabot[bot] avatar erane avatar liguobao avatar piratf avatar xiaoshayu123 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

58housesearch's Issues

用vs打开,出现错误

用vs打开项目.58HouseSearch可以正常运行,但是58HouseSearch.Core不. 如下图所示:

,

但是我已经安装好了 .net core,nuget 包里也是正常的,不知道怎么操作?

删除 58HouseSearch.Core.csproj 部分节点

删除 58HouseSearch/58HouseSearch.Core/58HouseSearch.Core/58HouseSearch.Core.csproj 里
下所有 节点, 否则打开项目后会报错,根据错误提示这些资源文件包涵在了项目引用里。

新增豆瓣租房数据

爬取豆瓣豆瓣数据,地图显示。
思路:定时爬取豆瓣租房页面,中文分词后提取地点,价格,落地到数据库后显示。

异步返回搜索数据

输入价格区间搜索的时候,异步分批返回数据。
实现方法:首次ajax请求获取数据总量,直接根据总数循环ajax post获取数据,添加到地图中。

新增爬虫启动API,使用外部调度

当前服务器比较差,全部爬虫放在一起跑的话服务器有点撑不住.
考虑把爬虫启动API暴露出来,然后使用调度平台来做调度.

Do not use port to show your Repo

Advice

You know, now this project is presented on http://codelover.link:8080.

So, maybe you can change this to github pages ?

You know, if you have more than one repo to show, it's just a bad thing to change the repo url with different ports.

我在自己的vs里修改mapController.js没效果

hi,大神,我在自己的VS里运行程序,想增加data的参数,

 data: { costFrom: costFrom, costTo: costTo, cnName: city.shortName,dataFrom:datafrom },

其中dataFrom是指数据的来源网站,但是我添加没反应。
这是js的引用代码:

    <script src="~/DomainJS/lib/require.2.1.1.min.js" defer async="true"></script>
    @*<script src="~/DomainJS/lib/require.2.1.1.min.js" data-main="/DomainJS/home"></script>*@
    <script src="~/DomainJS/lib/require.2.1.1.min.js" data-main="/DomainJS/housecommom"></script>

一点小建议

两点

  1. 把 README 总体改得更加"新人友好"
    开头就说清楚这个东西是什么,能解决什么问题
    (现在给人的总体感觉是很"乱")

  2. Changelog 太长了,对大部分用户来说没有马上知道的必要,可以单独放到一个 Changelog.md 文件里
    然后 README 文件里放个链接可以点过去就行了

步行导航....

应广大狼友要求加入步行导航....
PS:说得好像步行能到的房子租得起的样子

用户体验建议

您好!

您做的这个真的很棒,但是使用过程有一个小建议,可不可以不要直接进行地图导航,而是按一个按键之后地图导航,不然的话经常会打扰到体验。

谢谢您~

拖拽选址

http://lbs.amap.com/api/javascript-api/example/amap-ui-positionpicker/position-picker2

<!-- 重点参数:iconStyle -->
<!doctype html>
<html lang="zh-CN">

<head>
    <!-- 原始地址://webapi.amap.com/ui/1.0/ui/misc/PositionPicker/examples/positionPicker2.html -->
    <base href="//webapi.amap.com/ui/1.0/ui/misc/PositionPicker/examples/" />
    <meta charset="utf-8">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>自定义图标</title>
    <style>
    html,
    body {
        height: 100%;
        margin: 0;
        width: 100%;
        padding: 0;
        overflow: hidden;
        font-size: 13px;
    }
    
    .map {
        height: 100%;
        width: 60%;
        float: left;
    }
    
    #right {
        color: #444;
        background-color: #f8f8f8;
        width: 40%;
        float: left;
        height: 100%;
    }
    
    #start,
    #stop,
    #right input {
        margin: 4px;
        margin-left: 15px;
    }
    
    .title {
        width: 100%;
        background-color: #dadada
    }
    
    button {
        border: solid 1px;
        margin-left: 15px;
        background-color: #dadafa;
    }
    
    .c {
        font-weight: 600;
        padding-left: 15px;
        padding-top: 4px;
    }
    
    #lnglat,
    #address,
    #nearestJunction,
    #nearestRoad,
    #nearestPOI,
    .title {
        padding-left: 15px;
    }
    </style>
</head>

<body>
    <div id="container" class="map" tabindex="0"></div>
    <div id='right'>
        <div>
            <div class='title'>选择模式</div>
            <input type='radio' name='mode' value='dragMap'>拖拽地图模式</input>
            </br>
            <input type='radio' name='mode' value='dragMarker' checked>拖拽Marker模式</input>
        </div>
        <div>
            <button id='start'>开始选点</button>
            <button id='stop'>关闭选点</button>
        </div>
        <div>
            <div class='title'>选址结果</div>
            <div class='c'>经纬度:</div>
            <div id='lnglat'></div>
            <div class='c'>地址:</div>
            <div id='address'></div>
            <div class='c'>最近的路口:</div>
            <div id='nearestJunction'></div>
            <div class='c'>最近的路:</div>
            <div id='nearestRoad'></div>
            <div class='c'>最近的POI:</div>
            <div id='nearestPOI'></div>
        </div>
    </div>
    <script type="text/javascript" src='//webapi.amap.com/maps?v=1.4.6&key=您申请的key值&plugin=AMap.ToolBar'></script>
    <!-- UI组件库 1.0 -->
    <script src="//webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script>
    <script type="text/javascript">
    AMapUI.loadUI(['misc/PositionPicker'], function(PositionPicker) {
        var map = new AMap.Map('container', {
            zoom: 16,
            scrollWheel: false
        })
        var positionPicker = new PositionPicker({
            mode: 'dragMarker',
            map: map,
            iconStyle: { //自定义外观
                url: '//webapi.amap.com/ui/1.0/assets/position-picker2.png',
                ancher: [24, 40],
                size: [48, 48]
            }
        });

        positionPicker.on('success', function(positionResult) {
            document.getElementById('lnglat').innerHTML = positionResult.position;
            document.getElementById('address').innerHTML = positionResult.address;
            document.getElementById('nearestJunction').innerHTML = positionResult.nearestJunction;
            document.getElementById('nearestRoad').innerHTML = positionResult.nearestRoad;
            document.getElementById('nearestPOI').innerHTML = positionResult.nearestPOI;
        });
        positionPicker.on('fail', function(positionResult) {
            document.getElementById('lnglat').innerHTML = ' ';
            document.getElementById('address').innerHTML = ' ';
            document.getElementById('nearestJunction').innerHTML = ' ';
            document.getElementById('nearestRoad').innerHTML = ' ';
            document.getElementById('nearestPOI').innerHTML = ' ';
        });
        var onModeChange = function(e) {
            positionPicker.setMode(e.target.value)
        }
        var startButton = document.getElementById('start');
        var stopButton = document.getElementById('stop');
        var dragMapMode = document.getElementsByName('mode')[0];
        var dragMarkerMode = document.getElementsByName('mode')[1];
        AMap.event.addDomListener(startButton, 'click', function() {
            positionPicker.start(map.getBounds().getSouthWest())
        })
        AMap.event.addDomListener(stopButton, 'click', function() {
            positionPicker.stop();
        })
        AMap.event.addDomListener(dragMapMode, 'change', onModeChange)
        AMap.event.addDomListener(dragMarkerMode, 'change', onModeChange);
        positionPicker.start();

        map.addControl(new AMap.ToolBar({
            liteStyle: true
        }))
    });
    </script>
</body>

</html>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.