【问题标题】:Obtain Geometric Information and name from a map-design website从地图设计网站获取几何信息和名称
【发布时间】:2019-01-14 01:38:56
【问题描述】:

有一个地图设计网站,该网站的信息被“web.archive.org”作为快照。不过,我需要的几乎所有信息都可以在此快照中读取。网址是“https://web.archive.org/web/20130601211515/http://rasatlar.dsi.gov.tr/”。

当鼠标碰到一个本身有几何位置的点图时,在右下角的方框内会显示一个带有代码的标题和另一个信息,并且可以看到它的X和Y位置(纬度,经度)信息在右下角。我需要收集本站保留的这些 X、Y 位置和标题、代码信息。

下面的脚本尝试在框中打印文本,但我也有这个错误。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains



driver = webdriver.Chrome(executable_path=r'D:\chromedriver.exe')
driver.implicitly_wait(30)
base_url = "https://www.katalon.com/"
verificationErrors = []
accept_next_alert = True  

driver.get("https://web.archive.org/web/20130601211515/http://rasatlar.dsi.gov.tr/")


a= driver.find_element_by_id("OpenLayers_Geometry_Point_6795")
hover = ActionChains(driver).move_to_element(a)
#driver.find_element_by_id("draggable").click()

b= driver.find_element_by_xpath((By.XPATH,"//*[@id='draggable']/p[1]")).text
print (b)

错误:

  WebDriverException: invalid argument: 'value' must be a string

【问题讨论】:

    标签: image selenium dictionary web-scraping location


    【解决方案1】:

    编辑(更新问题):

    您的 xpath(如下)不工作:

    all_points = WebDriverWait(driver, 30).until(EC.presence_of_all_elements_located((By.XPATH,"//div[contains(@id,'OpenLayers_Geometry_Point_')]/img")))
    

    正确的 xpath 是:

    //div[contains(@id,'OpenLayers_Layer_Vector_RootContainer')]//*[contains(@id,'OpenLayers_Geometry_Point_')]
    

    您似乎有兴趣从下图中显示的框中获取信息:

    问题是,一旦您将鼠标移开,信息就会消失。但是,您可以使用 CDT 中提供的“中断”功能使其保持不变。

    我已经在下图(右侧)中发布了 HTML 结构,您可以参考它来获取正确的 xpath:

    获取标题元素的 Xpath(即 E17A008/TARSUS IRMAĞI):

    //*[@id="draggable"]/h1
    

    Xpath 获取第二个元素,即 MUHAT KÖPRÜSÜ

    //*[@id="draggable"]/p[1]
    

    同样,您应该能够获取其他元素的相关 xpath。

    如何使用Break:

    • 右键单击右框(不用担心,即使它是空框)。

    • 单击 On Inspect -> 右键单击​​开发工具中显示的元素,即 <div id="draggable" class="ui-widget-content ui-draggable"></div>

    • 点击Break On->子树修改

    现在,如果您尝试选择另一个地址,则无论何时对该元素进行任何修改,都会中断。

    【讨论】:

    • 如果我找到了 Id 元素,我会用你的 cmets 做一些事情,但是上面的脚本出现超时错误。
    • 嘿,Raj,你能帮我进一步编码吗?
    • 在哪个特定的代码语句中,您遇到超时错误?您能否详细发布您尝试过的内容以及异常情况?
    • 好的,我会尽快更新,请保持联系。
    • 嗨 Raj,我更新了我遇到的错误。你能看一下吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2019-08-13
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多