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

左心房为你撑大大i 提交于 2020-01-25 10:08:17

前提:数据样式格式一致

工具: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()

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

在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!