爬虫学习——批量在geoserver发布矢量数据

前提:数据样式格式一致

工具:selenium+Chromedriver;

本次代码主要依靠selenium+Python,浏览器我用的是Chrome浏览器以及相应的驱动Chromedriver,selenium可以通过pip安装,Chromedriver要去网上下载与浏览器版本一致的安装包,具体安装过程自行百度。

数据前期准备:

在这里插入图片描述

Python代码:

import time
from selenium import webdriver
import os

def getFiles(dir, suffix): # 查找根目录,文件后缀
    res = []
    for root, directory, files in os.walk(dir):  # =>当前根,根下目录,目录下的文件
        for filename in files:
            name, suf = os.path.splitext(filename) # =>文件名,文件后缀
            if suf == suffix:
                res.append(name) # =>吧一串字符串组合成路径
    return res

driver= webdriver.Chrome()
driver.get('http://localhost:8080/geoserver/web/wicket/bookmarkable/org.geoserver.web.data.store.StorePage?21')
driver.find_element_by_id("username").send_keys("admin") # 填入用户名
driver.find_element_by_id("password").send_keys("geoserver") # 填入密码
driver.find_element_by_css_selector(".positive").click()

for file in getFiles("E:\\我的坚果云\\New\\", '.shp'):  # =>查找以shp结尾的文件
        driver.get('http://localhost:8080/geoserver/web/wicket/bookmarkable/org.geoserver.web.data.store.StorePage?5')
        driver.find_element_by_css_selector(".add-link").click()
        driver.find_element_by_xpath('//ul/li[1]/div[6]/a').click()
        driver.find_element_by_xpath('//select[1]').send_keys("typhoon")
        driver.find_element_by_xpath('//fieldset/div[2]/div[1]/input').send_keys("typhoon-point"+file)
        driver.find_element_by_css_selector(".longtext").clear()
        driver.find_element_by_css_selector(".longtext").send_keys("file://E:\\我的坚果云\\New\\"+file+".shp") //你的文件路径
        driver.find_element_by_xpath('/html/body/div[2]/div[1]/div[2]/div[2]/form/div[3]//a[1]').click()
        time.sleep(2)
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/div/div[2]/div/table/tbody/tr/td[3]/span/a').click()
        time.sleep(2)
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/'
                                     'div/ul/li[1]/fieldset/ul/li[1]/input').send_keys("typhoon-point"+file)  //自定义命名方式,我的是typhoon-point加编号
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[2]/'
                                     'fieldset/ul/li[1]/div[2]/a[1]').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[1]/div/ul/div/li[2]/f'
                                     'ieldset/ul/li[2]/a').click()
        time.sleep(1)
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[1]/ul/li[2]/a').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div[3]/div/ul/li/fieldset/'
                                     'ul[3]/li[1]/span/span[1]/span/span[1]').click()
        driver.find_element_by_xpath('/html/body/span/span/span[1]/input').send_keys("point") //这里的point改为你用的style名字
        driver.find_element_by_xpath('/html/body/span/span/span[2]/ul/li[1]').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[1]/ul/li[4]/a').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[2]/div[2]/div/fieldset/ul/li[2]/div/'
                                     'ul/li[10]/span/div/div[1]/table/tbody/tr[2]/td[5]/a[2]').click()
        driver.find_element_by_xpath('/html/body/div[2]/div/div[2]/div[2]/form/div[3]/a[1]').click()

效果(浏览器一条条自动发布):

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答您的问题。首先需要了解一下GeoServer的架构和工作原理,以及shapefile图层的相关知识。 GeoServer是一个基于Java的开源地理信息系统软件,它可以将地理空间数据发布为Web服务。它的工作原理是将地理空间数据存储在数据库中,然后将数据通过WMS、WFS等协议发布为Web服务。 shapefile是一种常见的地理信息数据格式,它由三个文件组成:.shp、.dbf和.shx文件。其中.shp文件包含了地理要素的几何形状信息,.dbf文件包含了地理要素的属性信息,.shx文件是用来提高访问速度的索引文件。 为了自动发布shapefile图层,可以考虑编写一个插件来实现。具体步骤如下: 1. 创建一个新的GeoServer插件项目,并添加依赖项。 2. 实现一个自定义的发布工具,用来将shapefile文件上传到GeoServer中,并创建对应的图层。 3. 实现一个自定义的数据存储,用来管理shapefile图层的数据。 4. 实现一个自定义的样式管理器,用来管理shapefile图层的样式。 5. 扩展GeoServer的REST API,以便我们能够在UI中访问我们的自定义插件。 6. 编写一些测试用例,确保我们的插件能够正常工作。 以上是大致的步骤,具体实现方法需要根据您的需求进行调整。如果您需要更详细的信息,可以参考GeoServer官方文档中的扩展开发部分,或者在CSDN上搜索相关的教程和例子。 希望能对您有所帮助,如果您还有其他问题,可以随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值