【问题标题】:Wikipedia LATITUDE and LONGITUDE using XML XPATHS (in Python)Wikipedia LATITUDE 和 LONGITUDE 使用 XML XPATHS(在 Python 中)
【发布时间】:2020-04-07 22:46:00
【问题描述】:

我正在尝试从(随机)维基百科条目中获取纬度和经度。

wiki_coordinates(website)
coordinates = website.xml.find('.//*[@id="coordinates"]/')

这是来自https://en.wikipedia.org/wiki/Seattle(纬度和经度)的HTML

HTML 有两个“有趣”的部分

<span class="latitude">47°36′35″N</span> <span class="longitude">122°19′59″W</span>

<span class="geo-dec" title="...">47.60972°N 122.33306°W</span>

问题在于每个维基百科条目都有不同的 xpath(或缺失)。

例如:

XPath =  ".//*[@id="coordinates"]/span/span/a/span[1]/span"
XPath = ".//*[@id="coordinates"]/span/a/span[3]/span[1]"

谢谢!

【问题讨论】:

  • 当你有文本输出时,don't take a picture but copy paste the output in your POST 也可以右键复制html -> 复制为outerHTML。
  • 听起来像index.find 可能会返回其他错误值。
  • 同意@khelwood,因为缺少有关传入数据的更多信息。您可以在if index.find("th/a") is not None 分支中发布th 的值吗?如果它是一个空字符串,0NoneFalse,那么您已经得到了答案。
  • 好的,很抱歉,我澄清了这个问题。谢谢。

标签: python xpath xml-parsing geocoding


【解决方案1】:

如果您希望直接(从维基百科顶部)索引纬度和经度,有两种方法可以做到这一点。

coordinates = website.xml.find('.//*[@class="geo-dec"]').text

latitude = website.xml.find('.//*[@class="latitude"]').text
longitude = website.xml.find('.//*[@class="longitude"]').text

希望这会有所帮助! :)

【讨论】:

    【解决方案2】:

    试试这个 xpath 表达式,看看它是否适用于这些页面:

    //span[@id="coordinates"]//span[@class="geo-dec"]//text()
    

    【讨论】:

    • 谢谢...!坐标 = website.xml.find('.//*[@class="geo-dec"]') 确实有效..让我在几页上测试你的想法(我要检查“西雅图”和“新加坡”)
    猜你喜欢
    • 1970-01-01
    • 2011-08-27
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 2015-04-24
    • 2021-10-14
    相关资源
    最近更新 更多