zoukankan      html  css  js  c++  java
  • 最近的工作总结

    最近再写一个房产群发、采集的软件。百度【房产群发】,类似软件一大堆,就是仿着他们的做的。用的是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写一个手机应用,感觉还是不错的。

  • 相关阅读:
    Maven 环境的配置
    zTree的简单例子
    plsql免安装客户端的配置
    HDU 1232 畅通工程
    HDU 5698 瞬间移动
    Codeforces 1015E1 Stars Drawing (Easy Edition)
    Codeforces 784B Santa Claus and Keyboard Check
    Codeforces 500C New Year Book Reading
    NSarray 赋值 拷贝 等问题记录
    UINavigationController 操作记录
  • 原文地址:https://www.cnblogs.com/yanshanshuo/p/4206381.html
Copyright © 2011-2022 走看看