招聘信息的数据来源为智联招聘,首先构造出城市+工作职位的url,以便我们更好的搜索数据和解析页面数据。例如http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&kw=java (jl后边的是城市,kw为职位名), 根据此url解析第一页获取工作数量,智联招聘一页最多显示60条工作职位的信息,一共显示90页,所以我们根据获取的工作数量来确定需要抓取数据的页数,条数大于90页的则获取90页,小于90页的则使用实际页数。然后根据页数构建出最终的url:http://sou.zhaopin.com/jobs/searchresult.ashx?jl=北京&kw=java&p=1(p为页码) 。最后抓取每一页上对应具体工作的url所对应的工作信息及其公司信息。统计出最大工资与最小工资的平均工资,中位数工资,以及工资和工作经验的关系等
房租信息数据主要来源于赶集网,同样首先构建出对应城市url,例如:http://{}.ganji.com/fang1/o{}/ (第一个{}表示城市的汉子拼音首字母,第二个{}为页数),这里我们只抓取30页。统计出该城市有哪些中介公司,房屋的朝向和价格的关系,计算出每平米的价格等等。
气候信息数据主要来源于天气网,构建出的url为http://lishi.tianqi.com/{}/index.html ({}为城市汉子的拼音)。抓取该城市自2011-01-01以来的所有天气信息。统计出对应的历史天气,风向、风力以及每月的气温变化等。
AQI信息数据主要来源于中国空气质量在线监测分析平台历史数据网,构建出的url为https://www.aqistudy.cn/historydata/monthdata.php?city=北京 PM2.5历史数据网的数据主要是2013年12月到现在的数据。抓取每个月的数据统计量以及每月对应每天的数据量。统计AQI月变化的趋势以及等级月变化的趋势,统计等级的月数和天数。
景点信息数据主要来源于欣欣旅游网,构建的url为:http://{}.cncn.com/jingdian/1-{}-0-0.html (第一个{}为城市名的拼音,第二个{}为页数),首先抓取对应的页数,然后再针对每一页抓取当前城市的所有景点信息。将对应的景点的照片下载到本地,列表展示景点信息,统计出景点的热度排名。
美食信息数据也来源于欣欣旅游网,构建的url为:http://{}.cncn.com/meishi/index{}.htm (第一个{}为城市名的拼音,第二个{}为页数)。同样先抓取页数,如果所抓取的页数为空,则说明只有一页。抓取该城市的所有美食信息,将美食图片下载到本地,列表展示之,并根据热度进行排名。
平台上有相关的代码,但没有实际应用,这里说一下大体思路。对于反爬虫可设置代理IP池,每次解析url地址时,自动设置动态IP代理,在验证IP代理的有效性上,弄三个任务,第一个定时抓取IP代理地址,第二个用来检查代理的可用性,以打开百度为例,如果代理能正常访问百度,则将此代理加入文件或者数据库,否则放弃。第三个负责处理可用,但是已经过期的代理。项目中免费的ip代理的来源有西刺免费代理IP、快代理、开心代理IP平台,但是大多数的代理都不稳定。
对于网页的去重使用的是BloomFilter算法去重策略+单列模式。