• 最近的工作总结


    最近再写一个房产群发、采集的软件。百度【房产群发】,类似软件一大堆,就是仿着他们的做的。用的是winfrom(发现在哪工作都用...)、Sqlite。

    涉及到的就是正则、多线程、反射。HttpWebRequest、HttpWebResponse、WebClient、Cookie、StreamReader这些类来回倒腾。

    还有抓包工具HttpAnalyzerStdV7。

    具体的结构就是简单三层。
    Winfrom做界面。
    BLL业务逻辑,负责生成和调控采集发布任务。
    DAL访问SQLite保存数据。每个房产网站的对应一个项目,编译之后每个网站都有各自的DLL。DLL实现了BLL中规定的接口,包括采集、发布、接受命令、返回状态等等方法。
    BLL通过反射机制来调用DLL具体的方法,好处就是DLL缺失,或者因为升级损坏什么的不影响其他网站的工作。

    采集和发布,采集要简单的多。访问一个网址用WebClient下载HTML代码,这里重写了一下WebClient,只是简单的加上了一个超时设置。注意好网站编码就足够了,剩下的就是写正则,抓取内容。写这个软件的好处就是正则大大熟悉了,原来用正则就是网上抄一个,现在自己能写写了。

    发布就要复杂的多,但是注意的点其实并不多,就是繁杂。
    1.POST数据准备。每个网站验证的东西并不同,有的网站加密必须要算出相应的Key一起提交。还有最多的是小区ID、城市ID、区ID,一般都是ajax获取的,每个网站各有不同嘛。
    2.提交方式,一是直接POST这种方式比较简单。二就是生成一个流,模拟网站正常的提交的数据流。
    3.cookie必须要准备好,模拟网站需要的。
    基本上就这3点做好,这些网站的登录、发布、图片上传都能搞定。当然也有例外,那就另说了...

     

    在说说整个程序的运行。
    第一步当然是登录啦,输入用户名密码之后,程序访问网站验证用户名密码是否正确。
    成功之后是检测升级,网站会返回最新的版本和数据库版本,如果不同,再次访问一个地址,会返回最新的下载地址和数据结构,我这里返回的都是JSON,容易读取嘛。
    然后程序就下载更新包或者升级数据库。

    程序正常打开之后,
    首先是采集。用户可以设置采集的网站、时间频率、关键词设定等等。程序接到设置之后,生成一个任务实体。然后传递给BLL,BLL根据这个任务实体中的网站设置调用相关的DLL,这里就开启了多线程。网站DLL接到任务就开始采集啦。
    之后是发布,前面是一样的。网站DLL接收到发布任务之后,首先要登录,保存cookie。可能还要访问多个网址,保存响应的cookie,模拟正常操作的样子。之后就根据需要发布的房源信息的种类,比如出租、出售、合租等等准备数据然后提交。

    还有,最近在用APiCloud写一个手机应用,感觉还是不错的。

  • 相关阅读:
    如何用一句话激怒设计师
    Kubernetes1.3:POD生命周期管理
    从零学React Native之11 TextInput
    从零学React Native之10Text
    html+js 在页面同步服务器时间
    电信行业的容器化改造之道
    容器化ICT融合初体验
    Laravel 发送邮件(最简单的讲解!)
    jquery( 点击按钮出来文本框并限制文本框的个数)
    OpenStack宣布用Kubernetes重写底层编排引擎
  • 原文地址:https://www.cnblogs.com/yanshanshuo/p/4206381.html
Copyright © 2020-2023  润新知