【问题标题】:Querying page and Scraping it using Sheets使用表格查询页面并抓取它
【发布时间】:2021-10-15 21:05:36
【问题描述】:

我想使用表格从 wikidata 查询页面并抓取特定部分,但我找不到任何专门针对此的内容,而且由于我是这方面的初学者,我真的不知道从哪里开始。 所以,我有一个 Q 标识符列表,我想用它们来查询页面,然后检查那里是否有特定的部分(或者如果可能的话从中刮取数据),否则返回 false。我从我发现的 here

开始
=ImportXml(concat("https://en.wikipedia.org/w/api.php?action=query&prop=pageprops&
ppprop=wikibase_item&redirects=1&format=xml&titles=",G1),"//@wikibase_item")

但使用了 wiki 数据的链接(它会生成一个工作链接,但我不确定这是否与 API 等效,并且我是否可以进一步查询它以获取数据)和 wiki 属性代码我想得到(死亡日期,/wiki/Property:P570),但我得到“导入的内容是空的”。错误,对于这个link。理想情况下,我想获得死亡日期(2014 年 11 月 20 日),或者至少是 TRUE ,这意味着该部分存在,并且该人已经死亡。

=IMPORTXML(CONCAT("https://www.wikidata.org/wiki/",A2),"/wiki/Property:P570")

所以我可能有一些 Q 链接根本没有这个部分/属性,我应该得到一个错误,但我不知道为什么它也不适用于这个,我有吗将 Xpath 制作为 div,或者我可以使用 wiki 属性吗?

我希望这是有道理的,我会放样表here。谢谢

【问题讨论】:

    标签: regex web-scraping google-sheets google-sheets-formula wikipedia-api


    【解决方案1】:

    尝试:

    =QUERY(IMPORTXML("https://www.wikidata.org/wiki/"&A1, "//*"), 
     "select Col2 where Col1 = 'date of death' and Col2 is not null")
    

    或:

    =QUERY(IMPORTXML("https://www.wikidata.org/wiki/"&A1, "//*"), 
     "select Col2 where Col1 = 'date of death' and Col2 is not null")<>""
    

    没有匹配:

    =IFERROR(QUERY(IMPORTXML("https://www.wikidata.org/wiki/"&A1, "//*"), 
     "select Col2 where Col1 = 'date of death' and Col2 is not null"), FALSE)
    


    =IFERROR(REGEXEXTRACT(QUERY(IMPORTXML("wikidata.org/wiki/"&A2, "//*"), 
     "select Col2 where Col1 = 'date of birth' and Col2 is not null"), 
     "(.*) \d.*reference.*"), FALSE)
    

    【讨论】:

    • 这是一个很棒的解决方案。您知道哪个版本的 xpath 与 IMPORTXML 兼容吗?
    • @SIM gs 使用 1.0 版本,但并非所有怪癖都得到完全支持,所以可以说它的 0.85 ;)
    • 谢谢,我最终使用了第一个和最后一个的组合
    • 并添加正则表达式以仅提取年份(没有参考部分)。 =IFERROR(REGEXEXTRACT(QUERY(IMPORTXML("wikidata.org/wiki/"&A2, "//*"), "select Col2 where Col1 = 'date ofbirth' and Col2 is not null"),"(.*)\d.*reference .*"),FALSE)
    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多