文章目录

  • 前言
  • 代码详情
  • 后话

前言

最近都在写java,但是呢我的博客似乎写了很多爬虫的文章。昨天,一个朋友发了需求给我,帮她改改代码,于是我就自己改了一下。以后还是多写一写数据平台研发的文章。
需求如下:

  1. 网站地址:http://bulletin.cebpubservice.com/
  2. 搜索关键字:银行
  3. 内容:招标公告
  4. 公告发布时间:后台自定义
  5. 渠道:全部
  6. 需要爬取的数据字段:招标公告名称、所属行业、所属地区、来源渠道、公告发布时间、距离开标时间、公告原文url(招标公告名称的链接)

代码详情

# coding:utf-8import json
import os
import time
from copy import copy
import xlrd as xlrd
import xlwt as xlwt
from lxml import etree
import requests
import sys
from xlutils.copy import copyclass ZhaotoubiaopingtaiSpider():url = 'http://bulletin.cebpubservice.com/xxfbcmses/search/bulletin.html'wordkey = '银行'startcheckDate='2019-05-01'endcheckDate='2019-08-07'params={'searchDate': '1994-08-06','dates':'300','word': wordkey,'categoryId': 88,'startcheckDate': startcheckDate,'endcheckDate': endcheckDate,'industryName':'','area':''}headers = {'Cookie': 'JSESSIONID=86C51A1A0546E2DA84226C777B97326E; acw_tc=7b39758715651005855884465e5f705fb7b91c58119618b6147c26f348c7ee; Hm_lvt_da6ebc493961b944c4bf10a22517a198=1565100586,1565102272; Hm_lpvt_da6ebc493961b944c4bf10a22517a198=1565102918','Host': 'bulletin.cebpubservice.com','User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Whttp://bulletin.cebpubservice.com/xxfbcmses/search/bulletin.htmlOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'}def get_page(self, url, headers, params):try:response = requests.get(url, headers=headers, params=params)if response.status_code == 200:html = response.content.decode('utf-8', 'ignore').replace(u'\xa9', u'')#print(html)return htmlelse:print(response.status_code)except requests.ConnectionError:return Nonedef parse_page(self, html):table_list = html.xpath('//table[@class="table_text"]/tr')#print(table_list)all_info = []for table in table_list:td_list=table.xpath("td//text()")new_td_list = []if(len(td_list)>3):#print(td_list)for str in td_list:if(str.isspace() or str is None or str ==''):#print(" is none")passelse:new_td_list.append(str.replace('\t','').replace('\r\n',''))print(new_td_list)title = new_td_list[0]hangye = new_td_list[1]diqu = new_td_list[2]qudao = new_td_list[3]gonggaofabushijian = new_td_list[4]kaibiaoshijian = table.xpath("td[@name=\"openTime\"]/@id")[0]url = table.xpath("td/a/@href")[0]#print(url)href_url = url.replace('javascript:urlOpen(\'','').replace('\')','')#print(href_url)#print(title, hangye, diqu, qudao, gonggaofabushijian,kaibiaoshijian,href_url)info = [title, hangye, diqu, qudao, gonggaofabushijian,kaibiaoshijian,href_url]all_info.append(info)return all_infodef write_data(self,sheet, row, lst):for data_infos in lst:j = 0for data in data_infos:sheet.write(row, j, data)j += 1row += 1def save(self,file_name, data):if os.path.exists(file_name):# 打开excelrb = xlrd.open_workbook(file_name, formatting_info=True)# 用 xlrd 提供的方法获得现在已有的行数rn = rb.sheets()[0].nrows# 复制excelwb = copy(rb)# 从复制的excel文件中得到第一个sheetsheet = wb.get_sheet(0)# 向sheet中写入文件self.write_data(sheet, rn, data)# 删除原先的文件os.remove(file_name)# 保存wb.save(file_name)else:header = ['名称', '行业', '地区', '渠道', '公告发布时间', '开标时间', '链接url']book = xlwt.Workbook(encoding='utf-8')sheet = book.add_sheet('中国招标投标公共服务平台数据下载')# 向 excel 中写入表头for h in range(len(header)):sheet.write(0, h, header[h])# 向sheet中写入内容self.write_data(sheet, 1, data)book.save(file_name)def run(self):print('*' * 80)print('\t\t\t\t中国招标投标公共服务平台数据下载')print('作者:GRG  2019.8.05')print('--------------')path = (input('请输入要保存的地址(例如:C:\\Users\\xhdong1\\Desktop\\),不输入直接按回车表示默认当前位置:\n'))file_name = path + '中国招标投标公共服务平台'+ '.xls'for i in range(1, 1000):print('正在爬取第{}页'.format(str(i)))self.params['page'] = ihtml = self.get_page(url=self.url, headers=self.headers, params=self.params)# print(html)try:html = etree.HTML(html)# print(html)except Exception:passall_info = self.parse_page(html)self.save(file_name,all_info)time.sleep(3)if __name__ == '__main__':zhaotoubiaopingtaiSpider = ZhaotoubiaopingtaiSpider()zhaotoubiaopingtaiSpider.run()

后话

这个脚本直接可以跑起来了。
感谢身边的每一个亲爱的人。

爬虫-中国招标投标公共服务平台数据下载(2019-08-07)相关推荐

  1. 最新中国招标投标公共服务平台JS逆向分析

    目标网址:全国招标公告公示搜索引擎-中国招标投标公共服务平台 重要说明:文章教程仅供参考学习,请勿用于非法用途,否则后果自负. 目录 一.接口参数分析 二.AES加密算法介绍

  2. 某智慧教育公共服务平台视频下载教程

    近期疫情原因上网课朋友找我下载一些某教育平台视频.简单分析一下. 目录 开发者模式 查找地址 复制地址 下载视频 开发者模式 首先,万能大法F12看看能不能有收获. 查找地址 F12后找到[网络]选项 ...

  3. 某省公共资源交易公共服务平台数据解密,headers中的portal-sign加密

    注意:文章内容仅用于学习和技术交流,切勿做出违法的事情,如有侵权请联系我删除. 爬取的网址 aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9idXNpbmVzcy9saX ...

  4. 网络爬虫逆向(全国建筑市场监管公共服务平台)

    文章目录 网页解析 使用python调用JS代码 目标网址:https://jzsc.mohurd.gov.cn/data/company 爬取目标: 统一社会信用代码 企业名称 企业法定代表人 企业 ...

  5. 中国互金协会上线移动金融可信公共服务平台

    6月18日,镭射财经获悉,中国互联网金融协会(以下简称协会)按照<关于发布金融行业标准 加强移动金融客户端应用软件安全管理的通知>(银发[2019]237号)要求,负责对金融行业移动客户端 ...

  6. 中芯区块链公共服务平台即将推出“企业Linktree”新功能

    作者 /   杨大侠yanelis 排版 /   安慕曦 中芯区块链公共服务平台运营团队通过一年多的努力,截至2021年5月6日,已完成48685家企业信息上链.企业上链之后,通过中芯平台,无需再多头 ...

  7. 产业园区构建公共服务平台应当包含哪些服务

    对于构建产业园区公共服务平台,我们首先思考的应当是为什么要做服务平台? 我们接触过很多产业园区和产业地产项目,大多数都搭建了自身的公共服务平台,但有卓越成效的却凤毛麟角,很多公共服务依然依赖于区域政府 ...

  8. 国家地理信息公共服务平台:平台还是软件?

    2008年底GIS届最热闹的事情莫过于国家基础地理信息中心在12月26日组织召开的"国家地理信息公共服务平台总体设计方案专家论证会",尽管会议名称中显眼地包含着"公共服务 ...

  9. 官宣丨“创客集结号”成功接入“广东省教育资源公共服务平台”!

    喜讯! "创客集结号"成功接入"广东省教育资源公共服务平台"! 以科技助力教育,让每一个孩子快乐学习 以平台作为推动,让教育信息化未来更美好 "一千个 ...

最新文章

  1. C#Windows服务程序安装常见问题解决方法
  2. 【Android 异步操作】AsyncTask 异步任务 ( FutureTask 模拟 AsyncTask 执行过程 | AsyncTask 执行过程回顾 | FutureTask 分析 )
  3. 最大值减去最小值小于或等于num的子数组数量
  4. centos 卸载软件_Linux系统配置及服务管理_第09章_软件管理
  5. 扩散(洛谷-P1661)
  6. c++中的fork函数_linux c语言 fork() 和 exec 函数的简介和用法
  7. Builder内部类
  8. class react 获取_「前端进阶」React系列九 - 受控非受控组件
  9. js中对同步和异步的理解
  10. CTU 2019 Open Contest I.SixPack (WA39)
  11. SQL Server 2005新增加的功能
  12. python35安装教程_【邢不行量化小讲堂35-python量化入门】建议收藏|Windows下安装TA-Lib终极教程(下)...
  13. 如何申请免费的ssl证书
  14. 用html做祝福语朋友,朋友友情祝福语
  15. 关于存储单元、寻址范围的问题
  16. 服务器简介(一):服务器定义、服务器特点、服务器分类、服务器软件
  17. 在英特尔独立显卡上训练ResNet PyTorch模型
  18. stm32c8t6运行freertos
  19. android Web App开发
  20. word遇到网络地址过长自动换行

热门文章

  1. 重庆青年建立个人网站 月收入约5万元
  2. php利用socket_pair进程通信,nginx 进程间通信-socketpair
  3. utools 效率桌面工具
  4. 连接打印机显示服务器脱机怎么办,局域网内打印机显示脱机怎么办
  5. spring核心容器 spring container 详解
  6. PB想从程序里面控制自己想要的纸张的大小而不用去打印机里去设置纸张
  7. limit与OFFSET
  8. 在IT培训机构你能学到什么?
  9. unable to get repr for <class ‘torch.Tensor‘>错误可能原因
  10. 【品味人生】真理往往在废话中