【问题标题】:get string in url (web scraping)获取 url 中的字符串(网页抓取)
【发布时间】:2014-12-15 14:37:15
【问题描述】:

我不熟悉网络抓取,尽管我在少数情况下设法获得了一些内容。然而,这一次虽然我的问题看起来很简单,但我无法在网页中获得包含符号、名称和市场的字符串。也就是说,我想得到字符串“Merck KGaA (MRK.DE) -XETRA”在 url 中。我尝试了以下代码,它返回几个表,但我无法获得我正在寻找的部分:

url <- 'https://finance.yahoo.com/q?s=MRK.DE&ql=0'
require(httr)
require(XML)
table <- readHTMLTable(content(GET(url)),header=TRUE)

【问题讨论】:

    标签: xml r httr


    【解决方案1】:

    这可能不是这里最有效的脚本,但它肯定会起作用:

    library(rvest)
    library(magrittr)
    library(stringr)
    
    html(url) %>%
      html_nodes("h2") %>%
      extract2(3) %>%
      as('character') %>%
      str_replace('<h2>', '') %>%
      str_replace('</h2>', '')
    
    [1] "Merck KGaA (MRK.DE)"
    

    【讨论】:

    • 非常感谢您的帮助。您知道为什么字符串没有被更直接的调用(例如我尝试过的调用)捕获吗?一方面,如果可能的话,我想使用基本 R 或一些标准包,例如 XML 或 httr/RCurl。另一方面,代码越简单越好。
    • rvest 实际上是 Hadley 最近发布的一个包,用于从 Python 镜像 Beautiful Soup。如果没有强大的 HTML 工作知识,我发现它是最直观的。在您的示例中,readHTMLTable 只会从给定页面中抓取表格数据,并且看起来不像“默克...”位于表格中。
    • 你可以简单一点:html(url) %&gt;% html_nodes("h2") %&gt;% html_text() %&gt;% .[[3]]
    • 感谢@hadley 的澄清!我绝对更喜欢你的回答。当我遇到这个问题时,我还在修补你的包裹。一如既往,感谢您让我的生活更轻松。 :)
    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    相关资源
    最近更新 更多