首页 > 编程语言 >2、python脚本采集温州市数据开放平台数据

2、python脚本采集温州市数据开放平台数据

时间:2023-11-13 16:22:21浏览次数:42  
标签:数源 python findall 温州市 开放平台 re data response datas

1、采集网址url:https://data.wenzhou.gov.cn/jdop_front/index.do

需求:获取数据资源-数据来源单位(龙湾区50)的信息

具体要获取的信息如下:名称、摘要、更新、数源单位、地址、联系方式、数据领域、访问次数、下载次数、更新日期、发布日期、数据量。

 2、浏览器审查页面返回的数据进行分析,通过点击翻页,从页面返回中获取信息。

点击连接获取相关信息:

 
  1. 请求 URL: https://data.wenzhou.gov.cn/jdop_front/channal/datapubliclist.do
  2.  请求方法: POST
  3. 请求头:直接复制过去即可
  4. 请求参数: params = {
    "pageNumber": 1,
    "pageSize": 100,
    "type": "",
    "domainId": 0,
    "deptId": "",
    "regionId": "0303",
    "keyword": "",
    "content": "",
    "searchString": "",
    "orderDefault": "",
    "isDownload": "1",
    "dimensionId": "0",
    "openState": ""
    }

完整代码如下:

# -*- coding: utf-8 -*-
# 温州市公共数据开发平台数据资源模块-温州市龙湾区-数源单位信息爬取
import requests
from lxml import etree
import json
import jsonpath
import re
import pandas as pd

url="https://data.wenzhou.gov.cn/jdop_front/channal/datapubliclist.do"
#请求头信息
header={
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "keep-alive",
"Cookie": "JSESSIONID=B1912F728FE269FA5F80A952567EFD98; ZJZWFWSESSIONID=45a118fc-f9db-4a61-a0e9-e76ca877de6b; arialoadData=false",
"Host": "data.wenzhou.gov.cn",
"Origin": "https://data.wenzhou.gov.cn",
"Referer": "https://data.wenzhou.gov.cn/jdop_front/channal/data_public.do",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
"X-Requested-With": "XMLHttpRequest"
}
#post请求需要发送的url参数
params = {
    "pageNumber": 1,
    "pageSize": 100,
    "type": "",
    "domainId": 0,
    "deptId": "",
    "regionId": "0303",
    "keyword": "",
    "content": "",
    "searchString": "",
    "orderDefault": "",
    "isDownload": "1",
    "dimensionId": "0",
    "openState": ""
}
datas=requests.post(url,headers=header,params=params).text# 创建一个空表存储数据
datas_list = []
for iid in datas_herf:
    datas_url=(f"https://data.wenzhou.gov.cn/jdop_front/detail/data.do?iid={iid}&searchString=")
    response = requests.get(datas_url).text
    # print(response)
    #数据目录
    datas_directory=re.findall(r' <span class="sjxqTit1">(.*?)</span>',response,re.S)[0]
    #摘要
    datas_summary=re.findall(r'<td colspan="3">(.*?)</td>',response,re.S)[0]
    #更新周期
    datas_update_period=re.findall(r'<td>更新周期:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #数源单位
    datas_unit=re.findall(r'<td>数源单位:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #数源单位地址
    datas_unit_address=re.findall(r'<td>数源单位地址:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #联系方式
    datas_telephone=re.findall(r'<td>联系方式:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #数据领域
    datas_field=re.findall(r'<td>数据领域:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #查看次数
    datas_view=re.findall(r'<td>访问/下载次数:</td>.*?<td>(.*?)/.*?</td>',response,re.S)[0]
    #下载次数
    datas_download=re.findall(r'<td>访问/下载次数:</td>.*?<td>.*?/(.*?)</td>',response,re.S)[0]
    #更新时间
    datas_update=re.findall(r'<td>更新日期:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #发布日期
    datas_releasedate=re.findall(r'<td>发布日期:</td>.*?<td>(.*?)</td>',response,re.S)[0]
    #数据容量
    datas_capacity=re.findall(r'<td>数据量:</td>.*?<td>(.*?)</td>',response,re.S)[0]

    # 创建一个Pandas DataFrame来存储数据
    data_dict = {
        '名称': [datas_directory],
        '摘要': [datas_summary],
        '更新': [datas_update_period],
        '数源单位': [datas_unit],
        '数源单位地址': [datas_unit_address],
        '联系方式': [datas_telephone],
        '数据领域': [datas_field],
        '访问次数': [datas_view],
        '下载次数': [datas_download],
        '更新日期': [datas_update],
        '发布日期': [datas_releasedate],
        '数据量': [datas_capacity]
    }
    df = pd.DataFrame(data_dict)
    datas_list.append(df)
    # 合并所有数据DataFrame
    final_df = pd.concat(datas_list, ignore_index=True)

    # 保存到Excel文件
    final_df.to_excel('公共数据平台数据源信息.xlsx', index=False)
    print('执行完毕')

 

标签:数源,python,findall,温州市,开放平台,re,data,response,datas
From: https://www.cnblogs.com/lvjing/p/17829429.html

相关文章

  • 代码随想训练营第三十二天(Python)| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃
    122.买卖股票的最佳时机II1、贪心classSolution:defmaxProfit(self,prices:List[int])->int:res=0foriinrange(1,len(prices)):res+=max(prices[i]-prices[i-1],0)returnres2、动态规划classSolution:d......
  • pip下载python软件包时报错 Could not find a version that satisfies the requiremen
    pip下载python软件包时报错,使用了国内源等各种方法,后来才知道是电脑中打开了抓包工具;打开抓包工具后一定要关闭抓包工具,这样下载软件包就下载下来了关闭抓包工具后,下载成功了......
  • [-007-]-Python3+Unittest+Selenium Web UI自动化测试之等待
    selenium中,经常会出现元素还没有加载出来,浏览器找不到元素而报错的问题,设置等待是保证脚本运行的一个重要手段,常用的等待有三种--强制等待、隐式等待、显示等待。1.强制等待time.sleep(10)必须等待10s,不太实用2.隐式等待driver.implicitly_wait(最大等待时间X秒)设置一次,则......
  • Python中传参数args=(3,) 为什么要加上逗号
    python中传参数的是时候如果直接传args=(3),那么解释器会觉得你是传了一个数字而不是元组。只有args=(3,)这样传才会默认为传进一个元组。这是格式要求。例子如下 在pycharm上面创建线程的时候,只传一个参数会显示高亮警告: ......
  • Python requirements.txt安装用法介绍
    一、什么是requirements.txt文件在Python项目开发中,通常需要安装多个Python包。当我们在新的项目中启动一个虚拟环境,并且想要在新的虚拟环境中安装之前的依赖包时,就可以使用requirements.txt文件来完成。这个文件包含了所有需要安装的依赖包和其版本号。requirements.txt文件可以在......
  • 使用tracemalloc对python内存进行分析
    1.通过两次快照对importtracemalloc#这个是python自带的defon_start():'''需要测试的代码'''passtracemalloc.start()snapshot1=tracemalloc.take_snapshot()on_start()#需要测试的代码snapshot2=tracemalloc.take_snapshot(......
  • python爬虫实战-小说爬取
    python爬虫实战-小说爬取基于requests模块与lxml模块编写的爬虫,目标小说网站为https://www.hongxiu.com/category/基本思路主要内容分为三个部分使用requests模块获取网页内容使用lxml模块进行网页解析将解析出来的数据存储进MySQL数据库中获取网页内容网站分析......
  • python 脚本打包成exe可运行文件
    在Python 3中使用Tkinter编写GUI应用程序既简单又有趣。然而,如果你想与其他人分享你的应用程序,那么你需要将源代码和必要的库文件一起打包成一个可执行文件。本文将介绍如何使用pyinstaller将Python 3脚本打包成一个.exe文件并将Tkinter应用程序部署到其他计算机上。安装pyinstal......
  • 基于Python+Django的酒店管理系统网站开发
    一、介绍酒店管理系统。基于Python开发,前端使用HTML、CSS、BootStrap等技术搭建页面,后端使用Django框架处理用户响应请求,主要功能如下:分为普通用户和管理员两个角色普通用户:登录、注册、查看房间详情、收藏、购买、发布评论、对房间进行评分、查看个人订单、个人信息编辑、充......
  • Python的GUI图形界面工具大全
     来源:http://www.shanhubei.com/archives/2833.html总结了一下Python下的图形界面GUI工具,暂时能找到的资料就这么多,后续会补充推荐学习资料。图形界面的定义图形界面图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界......