ExtracTED
1.0.0
TED(Tenders Electronic Daily)是欧盟的“官方杂志”的在线版本,专门针对欧洲公共采购。
TED可以免费访问欧盟和欧洲经济领域的合同当局的公共采购通知(如果它们在任何其他国家提供服务)。
TED网站当前提供可追溯至1993年的XML软件包的大量下载,可在FTP ftp://ted.europa.eu/上找到,可访问通用凭证(访客/访客)。
该仓库包含提取和解析TED合同奖励通知的脚本,即采购程序的结果。这些脚本已经过全面测试,以提取2014年,2015年和2016年的所有合同奖励通知。文件被提取为Python词典,可以保存在MongoDB数据库中以易于检索,或者进一步归一化以在CSV中转换。
下图显示了TED网站所示的文档示例。

提取数据的示例(从上面的同一文档):
{
'DOC_ID': '466898-2016',
'CODED_DATA': {
'NOTICE_DATA': {
'IA_URL_GENERAL': 'www.ekz.ch',
'ISO_COUNTRY': 'CH',
'NO_DOC_OJS': '2016/S 253-466898',
'ORIGINAL_CPV': ['79970000'],
'REF_NOTICE': ['2016/S 172-310484']
},
'CODIF_DATA': {
'AA_AUTHORITY_TYPE': '4',
'AC_AWARD_CRIT': 'Z',
'DS_DATE_DISPATCH': '20161230',
'MA_MAIN_ACTIVITIES': ['Z'],
'NC_CONTRACT_NATURE': '4',
'PR_PROC': '2',
'RP_REGULATION': '7',
'TD_DOCUMENT_TYPE': '7',
'TY_TYPE_BID': '9'
}
},
'CONTRACT': {
'OTH_NOT': 'NO',
'CONTRACTING_AUTHORITY': 'Elektrizitätswerke des Kantons Zürich',
'CONTRACT_OBJECT': {
'CONCLUSION_FRAMEWORK_AGREEMENT': 'NO',
'CONTRACTS_DPS': 'NO',
'CONTRACT_COVERED_GPA': 'YES',
'CPV_MAIN': '79970000'
}
},
'AWARDS_OF_CONTRACT': [
{
'CONTRACTOR': {
'ADDRESS': 'Mühlebachstraße 52',
'COUNTRY': 'CH',
'OFFICIALNAME': 'Linkgroup AG',
'POSTAL_CODE': '8008',
'TOWN': 'Zürich'
},
'CONTRACT_VALUE': {
'COST': {
'CURRENCY': 'CHF',
'VALUE': 700000.0
}
}
}
]
}
提取数据的字段和描述
| 场地 | 数据类型 | 描述 |
|---|---|---|
| doc_id | 细绳 | TED中的唯一文档编号。 |
Coded_Data部分分为两组数据。
| 场地 | 数据类型 | 描述 |
|---|---|---|
| no_doc_ojs | 细绳 | TED中的通知号 |
| 原始_nuts | 列表(字符串) | 绩效或交付地点的区域代码。 2-5位数字的统计领土单位命名法代码。前两个数字的查找值:iso_country.csv |
| 原始_cpv | 列表(字符串) | 共同采购词汇的产品或服务8位代码。前两个数字的查找值:cpv.csv |
| iso_country | 细绳 | 缔约机构所在的国家的2个字符ISO代码。查找值:iso_country.csv |
| ia_url_general | 细绳 | 承包机构的主要互联网地址(URL) |
| ref_notice | 列表(字符串) | TED中的参考通知号。引用以前的出版物(先验信息,误目,...) |
| values_list | 总价值 | 估计的总价值或采购的总价值 |
values_list可以由以下字段组成:
| 场地 | 数据类型 | 描述 |
|---|---|---|
| global_value | 价值 | 招标的总价值。应等于合同列表中的总和 |
| Contracts_value | 列表(值) | 个人奖励价值。当合同由多个部分或批次组成时,就会发生这种情况。 |
每个值可以是单个或范围值,并且可以具有增值税百分比
| 场地 | 数据类型 | 描述 |
|---|---|---|
| 货币 | 细绳 | 价值货币 |
| 价值 | 漂浮 | 价值 |
| VAT_PRCT | int | 增值税百分比 |
| 场地 | 数据类型 | 描述 |
|---|---|---|
| 货币 | 细绳 | 价值货币 |
| low_value | 漂浮 | 较低的范围值 |
| high_value | 漂浮 | 范围更高的价值 |
| VAT_PRCT | int | 增值税百分比 |
| 场地 | 数据类型 | 描述 |
|---|---|---|
| ds_date_dispatch | 细绳 | 发出通知的日期。格式:Yyyymmdd |
| td_document_type | 细绳 | 文档类型。查找值:td_document_type.csv |
| aa_authority_type | 细绳 | 奖励授权的类型。查找值:aa_authority_type.csv |
| NC_Contract_Nature | 细绳 | 合同的性质。查找值:nc_contract_nature.csv |
| pr_proc | 细绳 | 过程类型。查找值:pr_proc.csv |
| rp_regulation | 细绳 | 适用于程序的法规。查找值:rp_regulation.csv |
| ty_type_bid | 细绳 | 投标类型。查找值:ty_type_bid.csv |
| ac_award_crit | 细绳 | 授予标准的类型。查找值:ac_award_crit.csv |
| ma_main_activities | 列表(字符串) | 承包机构的主要活动。查找值:ma_main_activities.csv |
合同部分包含XML格式的通知本身。在原始XML文件中,本节可以以不同的翻译提供,当完全翻译时,最多可达24个。如果可用,则首选合同的英文翻译。否则,法语和德语分别成为第二和第三选择。如果不存在任何此翻译,则选择第一个可用的。
| 场地 | 数据类型 | 描述 |
|---|---|---|
| oth_not | 细绳 | 指示该通知是否遵循标准结构(然后oth_not = no )还是打开结构,以允许出版任何其他不遵循标准表单的通知,又称非结构化通知(然后oth_not = yes )。仅当oth_not = no时,提取了contract_authority,Contract_Object和Awards_of_contract |
| 场地 | 数据类型 | 描述 |
|---|---|---|
| Contracting_authority | 细绳 | 合同机构的姓名 |
合同的对象。
| 场地 | 数据类型 | 描述 |
|---|---|---|
| 坚果 | 列表(字符串) | 绩效或交付地点的区域代码。 2-5位数字的统计领土单位命名法代码。前两个数字的查找值:iso_country.csv |
| nuts_extra | 细绳 | 关于性能或交货地点的其他提取的评论 |
| CPV_MAIN | 细绳 | 主要产品或服务8数字代码的常见采购词汇。前两个数字的查找值:cpv.csv |
| contract_covered_gpa | 细绳 | 是或否,如果GPA涵盖合同(政府采购协议) |
| 结论_framework_agreement | 细绳 | 是或否,如果合同是框架协议的一部分 |
| contracts_dps | 细绳 | 是或否,如果合同受到动态采购系统的约束 |
| Contract_value | 合同价值 | 总价值。应与个人承包商的合同价值的总和相对应。请参阅awards_of_contract |
每个合同价值可以由以下字段组成:
| 场地 | 数据类型 | 描述 |
|---|---|---|
| 成本 | 价值 | 实际成本 |
| 估计 | 价值 | 成本的初步估计 |
| number_of_years | int | 合同持续的年度。每年可能给出的成本/估计 |
| number_of_months | int | 合同最后一个月。每月可能给出的成本/估计 |
字段与上面提到的相同。请参阅节值数据类型
奖项清单。
每个奖项可以包含以下部分:
| 场地 | 数据类型 | 描述 |
|---|---|---|
| 官方名称 | 细绳 | 承包商的名称 |
| 国家 | 细绳 | 承包商国家 |
| 地址 | 细绳 | 承包商的地址(街道名称) |
| 镇 | 细绳 | 承包商镇 |
| 邮政编码 | 细绳 | 邮政承包商守则 |
字段与上面提到的相同。请参阅第3.3.1节Contract_value
需要Python模块:
选修的:
Python版本:3.6数据库:MongoDB,本地模式
如何转换文档的示例
file_path = '454322_2015.xml' # Contract Award notice downloaded from tED website
# Extract the raw data
from extractor import extract
raw = extract ( file_path )
# Validate the raw data
from validator import validate
data = validate ( raw )
# Prune the data: remove empty fields
from validator import prune
prune ( data )存储库结构:
.
├── Lookups
│ └── AA_AUTHORITY_TYPE.csv
│ └── AC_AWARD_CRIT.csv
│ └── CPV.csv
│ └── ISO_COUNTRY.csv
│ └── MA_MAIN_ACTIVITY.csv
│ └── NC_CONTRACT_NATURE.csv
│ └── PR_PROC.csv
│ └── RP_REGULATION.csv
│ └── TD_DOCUMENT_TYPE.csv
│ └── TY_TYPE_BID.csv
├── extractor.py
└── validator.py
└── mongo_import.py
Lookups :包含各种查找文件的文件夹extractor.py :从合同奖励通知中提取原始数据的脚本validator.py :验证原始数据并修剪字典的脚本(即删除空文件)mongo_import.py :将数据上传到mongoDB数据库中的脚本亚历山德拉·索兹(Alessandra Sozzi),在国家统计局大数据项目中工作
根据MIT许可发布。