建筑

一:网站结构

网站url:http://jzsc.mohurd.gov.cn/dataservice/query/comp/list


1.公司种子url获取

公司的主页url

进到这个网站然后看到第一个公司内蒙古华诚商务有限责任公司我从关注这哥网站开始首页好像从来没变过;不知道列表是根据什么来排序的。然后我们点进去这个公司看到它的url是
http://jzsc.mohurd.gov.cn/dataservice/query/comp/compDetail/001607230057395100它由一个固定的前缀
http://jzsc.mohurd.gov.cn/dataservice/query/comp/compDetail/)和公司ID(001607230057395100)构成。
所以我们只要拿到公司的ID号就等于拿到公司的主页url了。

怎么得到公司ID

-通过列表url来翻页

种子url打开得到的是一个建筑公司的列表,我们能得到列表里的公司ID;但是翻页的次数有限制最多有30页,然后发现列表上面还可以筛选条件。我试了通过 资质类别,包含资质名称, 企业注册属地 这3个条件跑了一遍跑出了40w多家公司id,我一排序去重只有10w。。。。我估计有很多公司都没给上这些标签!导致用这些标签筛选根本找不到!

-通过ID规律

通过上面那个方法排序得到的10w家公司的ID,我发现了规律。拿前面(001607230057395100)这个ID做例子 001607230057 这前面12位代表时间16年7月23日更新的,后面395100这六位表示从零开始的索引号。
规律是找到规律了但是要通过这个规律来获取所有公司ID还是有些困难。

我通过上面两种方法得到了33w家公司得名字以及公司ID。但是还是不全

-直接通过公司名发post请求

上面两个方法都有缺陷,最直接的方法是通过公司直接发送一个post请求得到公司ID;这个网站的搜索方式是模糊搜索。前提是你要知道这个公司的名字或简称!


2.拿到公司种子ID之后

ID与一级结点的关系
ID1与注册人员的结构####
ID2与工程项目的结构####
 无关。。有点不一样,看下代码与网页结构就知道了。

二:算法策略

1.多线程控制:

线程池只能定义在主线程里面这样才能控制好线程的数量。
更好的办法:代理允许一秒钟访问30次,要是能控制每秒发30次请求就好了。

2.http请求写法:

代理错误返回的代码
跟据代理返回的情况,要保证请求函数不反悔None,又要保证快速
其他的可以看代码,不懂的问我。
项目地址:http://h126:11000/plugins/spider_construction_by_py.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值