【问题标题】:Using rvest to scrape <a href>'s in <svg>'s使用 rvest 抓取 <svg> 中的 <a href>
【发布时间】:2018-02-10 06:51:23
【问题描述】:

我正在尝试抓取 svg 地图上的所有链接。很抱歉,我无法发布链接,因为您需要登录,但 html 文件如下所示:

...
<div class = 'header'>
    <div class = 'headermenu'>
    ## only other place where there exists <a href> tabs
        <a href = 'link_is_here'>...</a>
        ## four more of them, separated with non-breaking spaces
    </div>
</div>
<div class = 'main'></div>
<svg parameters_of_graphic>
    ## paths for images
    <a href='link_is_here' parameters_of_link>
        ## path for above link
    </a>
    ## paths for images
    <a href='link_is_here' parameters_of_link>
        <circle parameters_of_circle></circle>
    </a>
    ## multiple circle links of same format
</svg>
...

但是,当我使用home_url %&gt;% read_html() %&gt;% html_nodes('a') 时,我只得到了头类下的五个节点。我尝试使用 rvest 寻找 svg 抓取,但在 svg 选项卡下找不到任何抓取节点的方法。有没有办法在 R 中做到这一点?

【问题讨论】:

    标签: html r svg web-scraping rvest


    【解决方案1】:

    如果没有看到实际网页,我无法确定,但是我怀疑 svg 是使用 javascript 动态生成的。 read_html()不会在页面上运行js,所以在读取页面时这些链接可能不存在。

    您应该能够查看 read_html() 返回的内容以确认这一点。

    【讨论】:

    • 可能是这样,因为 rvest 在抓取时也会返回? 而不是实时天气。有没有办法让rvest运行js?
    • 不幸的是,运行页面的 js 比rvest 处理的要复杂一些。我建议调查RSelenium。另外this 博客文章看起来可能会有所帮助。
    • 请注意,在该教程中,startServer() 功能已失效,请改用rsDriver()
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 2020-07-18
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    相关资源
    最近更新 更多