|
@@ -0,0 +1,240 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+"""
|
|
|
+Created on 2021-12-21 14:34:16
|
|
|
+---------
|
|
|
+@summary:贵阳市公共资源交易监管网
|
|
|
+---------
|
|
|
+@author: 马国鹏
|
|
|
+"""
|
|
|
+import sys
|
|
|
+sys.path.append('/app/spiders/sword_feapder/FworkSpider')
|
|
|
+import feapder
|
|
|
+from items.spider_item import DataBakItem,MgpListItem
|
|
|
+from untils.proxy_pool import ProxyPool
|
|
|
+from feapder.dedup import Dedup
|
|
|
+from collections import namedtuple
|
|
|
+
|
|
|
+
|
|
|
+class Gysggzy(feapder.Spider):
|
|
|
+
|
|
|
+ def start_callback(self):
|
|
|
+ self.count = 0
|
|
|
+ Menu = namedtuple('Menu', ['channel', 'code', 'url', 'crawl_page'])
|
|
|
+
|
|
|
+ self.menus = [
|
|
|
+ Menu('政府采购投诉处理及处罚', 'gz_gysggzyjyjgw_zfcg_tscljcf',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/tscljcf/index.html', 1),
|
|
|
+ Menu('工程建设直接发包公告', 'gz_gysggzyjyjgw_gcjs_zjfbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zjfb/', 1),
|
|
|
+ # Menu('工程建设无效投标情况公示', 'gz_gysggzyjyjgw_gcjs_wxtbqkgs',
|
|
|
+ # 'http://ggzy.guiyang.gov.cn/gcjs/wxtbqkgs/', 1),
|
|
|
+ Menu('工程建设中标结果公告', 'gz_gysggzyjyjgw_gcjs_zbjggg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbjggg_5864877/', 1),
|
|
|
+ # Menu('工程建设合同签订公示', 'gz_gysggzyjyjgw_gcjs_htqdgs',
|
|
|
+ # 'http://ggzy.guiyang.gov.cn/gcjs/htqdgs/', 1),
|
|
|
+ Menu('工程建设直接发包', 'gz_gysggzyjyjgw_gcjs_zjfb',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zjfb/', 1),
|
|
|
+ Menu('国有企业采购合同', 'gz_gysggzyjyjgw_gyqycg_ht',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/ht/', 1),
|
|
|
+
|
|
|
+
|
|
|
+ Menu('政府采购更正公告', 'gz_gysggzyjyjgw_zfcg_gzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/bgcqgg/hw_5372423/index.html', 1),
|
|
|
+ Menu('政府采购更正公告', 'gz_gysggzyjyjgw_zfcg_gzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/bgcqgg/fw_5372424/index.html', 1),
|
|
|
+ Menu('政府采购更正公告', 'gz_gysggzyjyjgw_zfcg_gzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/bgcqgg/gc_5372425/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购中标公示', 'gz_gysggzyjyjgw_zfcg_zbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbcjjggg/hw_5372435/index.html', 1),
|
|
|
+ Menu('政府采购中标公示', 'gz_gysggzyjyjgw_zfcg_zbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbcjjggg/fw_5372436/index.html', 1),
|
|
|
+ Menu('政府采购中标公示', 'gz_gysggzyjyjgw_zfcg_zbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbcjjggg/gc_5372437/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购招标公告', 'gz_gysggzyjyjgw_zfcg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbgg_5372418/hw/index.html', 1),
|
|
|
+ Menu('政府采购招标公告', 'gz_gysggzyjyjgw_zfcg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbgg_5372418/fw/index.html', 1),
|
|
|
+ Menu('政府采购招标公告', 'gz_gysggzyjyjgw_zfcg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zbgg_5372418/gc/index.html', 1),
|
|
|
+
|
|
|
+
|
|
|
+ Menu('政府采购-废标公告', 'gz_gysggzyjyjgw_zfcg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/fbgg/hw_5372439/index.html', 1),
|
|
|
+ Menu('政府采购-废标公告', 'gz_gysggzyjyjgw_zfcg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/fbgg/fw_5372440/index.html', 1),
|
|
|
+ Menu('政府采购-废标公告', 'gz_gysggzyjyjgw_zfcg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/fbgg/gc_5372441/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购评标结果', 'gz_gysggzyjyjgw_zfcg_pbjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/psjg/hw_5372431/index.html', 1),
|
|
|
+ Menu('政府采购评标结果', 'gz_gysggzyjyjgw_zfcg_pbjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/psjg/fw_5372432/index.html', 1),
|
|
|
+ Menu('政府采购评标结果', 'gz_gysggzyjyjgw_zfcg_pbjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/psjg/gc_5372433/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购单一来源', 'gz_gysggzyjyjgw_zfcg_dyly',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/dylygs/hw_5372447/index.html', 1),
|
|
|
+ Menu('政府采购单一来源', 'gz_gysggzyjyjgw_zfcg_dyly',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/dylygs/fw_5372448/index.html', 1),
|
|
|
+ Menu('政府采购单一来源', 'gz_gysggzyjyjgw_zfcg_dyly',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/dylygs/gc_5372449/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购终止公告', 'gz_gysggzyjyjgw_zfcg_zzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zzgg/hw_5372427/index.html', 1),
|
|
|
+ Menu('政府采购终止公告', 'gz_gysggzyjyjgw_zfcg_zzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zzgg/fw_5372428/index.html', 1),
|
|
|
+ Menu('政府采购终止公告', 'gz_gysggzyjyjgw_zfcg_zzgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zzgg/gc_5372429/index.html', 1),
|
|
|
+
|
|
|
+ Menu('政府采购合同公告及管理', 'gz_gysggzyjyjgw_zfcg_htggjgl',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zfcghtgg/hw_5372443/index.html', 1),
|
|
|
+ Menu('政府采购合同公告及管理', 'gz_gysggzyjyjgw_zfcg_htggjgl',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zfcghtgg/fw_5372444/index.html', 1),
|
|
|
+ Menu('政府采购合同公告及管理', 'gz_gysggzyjyjgw_zfcg_htggjgl',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/zfcg/zfcghtgg/gc_5372445/index.html', 1),
|
|
|
+
|
|
|
+
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/jl/index.html', 1),
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/kc/index.html', 1),
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/sg/index.html', 1),
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/sj/index.html', 1),
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/sbcg/index.html', 1),
|
|
|
+ Menu('工程建设招标公告', 'gz_gysggzyjyjgw_gcjs_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zbgg_5372453/zcb/index.html', 1),
|
|
|
+
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/jl_5372475/index.html', 1),
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/kc_5372476/index.html', 1),
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/sg_5372477/index.html', 1),
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/sj_5372478/index.html', 1),
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/sbcg_5372479/index.html', 1),
|
|
|
+ Menu('工程建设流标公示', 'gz_gysggzyjyjgw_gcjs_lbgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbgs/zcb_5372480/index.html', 1),
|
|
|
+
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/jl_5372482/index.html', 1),
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/kc_5372483/index.html', 1),
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/sg_5372484/index.html', 15),
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/sj_5372485/index.html', 1),
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/sbcg_5372486/index.html', 1),
|
|
|
+ Menu('工程建设拦标价公示', 'gz_gysggzyjyjgw_gcjs_lbjkgs',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/lbjgs/zcb_5372487/index.html', 1),
|
|
|
+
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/jl_5372489/index.html', 1),
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/kc_5372490/index.html', 1),
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/sg_5372491/index.html', 1),
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/sj_5372492/index.html', 1),
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/sbcg_5372493/index.html', 1),
|
|
|
+ Menu('工程建设终止暂停公告', 'gz_gysggzyjyjgw_gcjs_zzztgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/gcjs/zzgg_5372488/zcb_5372494/index.html', 1),
|
|
|
+
|
|
|
+ Menu('国有企业采购招标公告', 'gz_gysggzyjyjgw_gyqycg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbgg_5372695/hw_5372696/index.html', 1),
|
|
|
+ Menu('国有企业采购招标公告', 'gz_gysggzyjyjgw_gyqycg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbgg_5372695/fw_5372697/index.html', 1),
|
|
|
+ Menu('国有企业采购招标公告', 'gz_gysggzyjyjgw_gyqycg_zbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbgg_5372695/gc_5372698/index.html', 1),
|
|
|
+
|
|
|
+ Menu('国有企业采购变更澄清公告', 'gz_gysggzyjyjgw_gyqycg_bgcqgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/bgcqgg/hw_5372700/index.html', 1),
|
|
|
+ Menu('国有企业采购变更澄清公告', 'gz_gysggzyjyjgw_gyqycg_bgcqgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/bgcqgg/fw_5372701/index.html', 1),
|
|
|
+ Menu('国有企业采购变更澄清公告', 'gz_gysggzyjyjgw_gyqycg_bgcqgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/bgcqgg/gc_5372702/index.html', 1),
|
|
|
+
|
|
|
+ Menu('国有企业采购评审结果', 'gz_gysggzyjyjgw_gyqycg_psjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/psjg_5372707/hw_5372708/index.html', 1),
|
|
|
+ Menu('国有企业采购评审结果', 'gz_gysggzyjyjgw_gyqycg_psjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/psjg_5372707/fw_5372709/index.html', 1),
|
|
|
+ Menu('国有企业采购评审结果', 'gz_gysggzyjyjgw_gyqycg_psjg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/psjg_5372707/gc_5372710/index.html', 1),
|
|
|
+
|
|
|
+ Menu('国有企业采购中标成交结果公告', 'gz_gysggzyjyjgw_gyqycg_zbcjjggg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbcjjggg/hw_5372712/index.html', 1),
|
|
|
+ Menu('国有企业采购中标成交结果公告', 'gz_gysggzyjyjgw_gyqycg_zbcjjggg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbcjjggg/fw_5372713/index.html', 1),
|
|
|
+ Menu('国有企业采购中标成交结果公告', 'gz_gysggzyjyjgw_gyqycg_zbcjjggg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/zbcjjggg/gc_5372714/index.html', 1),
|
|
|
+
|
|
|
+
|
|
|
+ Menu('国有企业采购废标公告', 'gz_gysggzyjyjgw_gyqycg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/fbgg_5372715/hw_5372716/index.html', 1),
|
|
|
+ Menu('国有企业采购废标公告', 'gz_gysggzyjyjgw_gyqycg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/fbgg_5372715/fw_5372717/index.html', 1),
|
|
|
+ Menu('国有企业采购废标公告', 'gz_gysggzyjyjgw_gyqycg_fbgg',
|
|
|
+ 'http://ggzy.guiyang.gov.cn/qt/gyqycg/fbgg_5372715/gc_5372718/index.html', 1),
|
|
|
+
|
|
|
+
|
|
|
+ ]
|
|
|
+ def start_requests(self):
|
|
|
+ for menu in self.menus:
|
|
|
+ for page in range(menu.crawl_page):
|
|
|
+ if page == 0:
|
|
|
+ start_url = menu.url
|
|
|
+ else:
|
|
|
+ start_url = menu.url.replace("index.html",f"index_{page}.html")
|
|
|
+ print(start_url)
|
|
|
+ yield feapder.Request(url=start_url, item=menu._asdict())
|
|
|
+
|
|
|
+ def parse(self, request, response):
|
|
|
+ # print(response.text)
|
|
|
+ menu = request.item
|
|
|
+ self.count += 1 # 一个计数器
|
|
|
+ dedup = Dedup(Dedup.BloomFilter)
|
|
|
+ href_list = []
|
|
|
+ info_list = response.xpath("//ul[@class='newsList']/div/li")
|
|
|
+ for info in info_list:
|
|
|
+ href = info.xpath("./a/@href").extract_first()
|
|
|
+ if menu.get("channel") in ['工程建设合同签订公示',"工程建设无效投标情况公示","工程建设中标结果公告"]:
|
|
|
+ href = info.xpath("./a/@href").extract_first()
|
|
|
+
|
|
|
+ title = info.xpath("./a/@title").extract_first()
|
|
|
+ create_time = info.xpath("./a/span/text()").extract_first()
|
|
|
+
|
|
|
+ data_item = DataBakItem() # 存储数据的管道
|
|
|
+ data_item.href = href # 标书链接
|
|
|
+ data_item.channel = menu.get("channel") # 最上方定义的抓取栏目 (编辑器定的)
|
|
|
+ data_item.spidercode = menu.get("code") # 最上方定义的爬虫code(编辑器定的)
|
|
|
+ data_item.title = title # 标题
|
|
|
+ data_item.publishtime = create_time # 标书发布时间
|
|
|
+ data_item.site = "贵阳市公共资源交易监管网"
|
|
|
+ data_item.area = "贵州省" # 城市默认:全国
|
|
|
+ data_item.city = "贵阳市" # 城市 默认为空
|
|
|
+ ss = dedup.filter_exist_data([href])
|
|
|
+ if ss == []:
|
|
|
+ continue
|
|
|
+ list_item = MgpListItem()
|
|
|
+ list_item.parse = "self.detail_get"
|
|
|
+ list_item.parser_name = "details"
|
|
|
+ list_item.item = data_item.to_dict
|
|
|
+ list_item.deal_detail = ['//font[@id="Zoom"]']
|
|
|
+ list_item.parse_url = href
|
|
|
+ href_list.append(href)
|
|
|
+ yield list_item
|
|
|
+ dedup.add(href_list)
|
|
|
+
|
|
|
+ def end_callback(self):
|
|
|
+ print("爬虫结束")
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ Gysggzy(redis_key="fwork:gysggzy").start()
|