加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
ReptileFour.py 3.90 KB
一键复制 编辑 原始数据 按行查看 历史
Barry 提交于 2024-08-02 09:52 . 招投标网站爬虫程序
import requests # 下载网页
import re
from datetime import datetime
import xlwt # 与excel相关的操作
from lxml import etree # 引入xpath库,方便定位元素
import time # 进行访问频率控制
import random # 随机数生成
import math # 数学库
import json
import bs4 # beautifulSoup,解析网页
# 用正则过滤只取汉字
def find_chinese_characters(text):
# 匹配基本汉字和扩展部分的汉字
chinese_pattern = re.compile(
r'[\u4e00-\u9fff]+', re.UNICODE)
return chinese_pattern.findall(text)
# 用正则过滤引号和逗号
def remove_quotes_and_commas(text):
# 使用正则表达式匹配单引号和逗号,并将它们替换为空字符串
return re.sub(r"[',]", "", text)
# 时间格式转化
def format_date(seconds):
timestamp_ms = seconds # 以毫秒为单位的Unix时间戳
timestamp_s = timestamp_ms / 1000 # 转换为以秒为单位
# 使用datetime.fromtimestamp转换时间戳为datetime对象
date = datetime.fromtimestamp(timestamp_s)
# 输出日期和时间
return (date)
num2 = 0
num = random.randint(1, 1000)
Savepath = "D:/test/招投标项目信息" + str(num) + ".xls" # 存储路径
datalistresult = [] # 用来存储已经经过处理的信息
# 将html获取的信息存入Excel表格中
def savedata(Datalist, Savapath):
col = ("项目名成称", "网页地址", "日期") # Excel的表头 也就是列数
house_list = xlwt.Workbook(encoding="utf-8", style_compression=0) # 创建workbook对象
worksheet = house_list.add_sheet("智能化项目", cell_overwrite_ok=True) # 新建工作区,设为可覆盖
for i in range(0, 3): # 写入表头 一共3列
worksheet.write(0, i, col[i]) # 写入表头 一共3列
try:
g = 0
for h in Datalist:
for f in range(0, 10): # 写入数据 也就是行数 num2为总行数
g = g + 1
print("正在写入第%d条数据" % (g + 1))
items = h[f]
for j in range(0, 3): # 列数
worksheet.write(g, j, items[j]) # g是从第1行开始写 第0行被表头占用了 items[j]将数据按照数据的索引进行写入
house_list.save(Savapath) # 存储
except:
print('存入Execl失败')
pass
Results = []
url = 'http://ss.cms.huaian.gov.cn:28780/service/search/queryData'
# 准备参数
for i in range(1, 14):
data = {
'q': '智能化',
'searchField': 'article',
'sortField': 'score',
'pageSize': '10',
'pageNo': i,
'siteLayer': '01460010',
'searchModel': '',
'timeRange': '1year'
}
# 请求头
headers = {
'Referer': 'http://czj.huaian.gov.cn/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
}
request = requests.post(url, data=data, headers=headers)
dict = request.json()
num2 = 14 * 10
# 解析JSON数组
# json_array = json.loads(dict)
# print(json_array['title'])
print(f'第{i}页数据')
Datalist = [] # 用来存储已经经过处理的信息
# 获取网页数据
for item in dict['list']:
data_item = [] # 在循环里面建立一个空的列表存储关键词一页的全部数据
chinese_characters = find_chinese_characters(item['title'])
# 项目名字
name = ''.join(chinese_characters)
data_item.append(name)
dizhi = item['domain'] + item['path']
# 网页地址
path = ''.join(dizhi)
data_item.append(path)
# 日期时间
release_time = str(format_date(item['release_time']))
data_item.append(release_time)
Datalist.append(data_item)
Results.append(Datalist)
savedata(Results, Savepath)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化