【问题标题】:rvest: selecting a link based on link textrvest:根据链接文本选择链接
【发布时间】:2018-06-19 15:27:06
【问题描述】:

我正在尝试抓取一些我需要的链接位于不同位置的网页(因此 CSS 选择器不同),但文本保持不变。我希望能够根据其文本选择链接,以便我可以抓取该链接以供以后使用。

这是我尝试过的一个示例:

test <- read_html("http://www.yaroslavl.vybory.izbirkom.ru/region/yaroslavl?action=show&global=true&root=762000007&tvd=276200077535&vrn=1001000882950&prver=0&pronetvd=null&region=76&sub_region=76&type=0&vibid=276200077535", encoding = "windows-1251")

test %>% html_nodes(xpath="//a[contains(text(), 'Сводная таблица о результатах выборов')]/@href")

但是,尽管链接文本是直接从 test %&gt;% html_nodes("a") %&gt;% html_text() 的输出中复制的,但它始终返回 {xml_nodeset (0)}

还有其他方法可以尝试基于文本选择链接吗?另外,这可能是编码问题吗?网站是用 windows-1251 编码的,我也用这种编码保存了我的 R 文件。

【问题讨论】:

  • 您使用的是什么版本的 rvest?当我运行你的代码时,我得到 {xml_nodeset (1)} 后跟 href = 链接,所以我不能重复你的错误。如果它只是您想要的链接,您可能需要考虑将代码更改为:test %&gt;% html_nodes(xpath="//a[contains(text(), 'Сводная таблица о результатах выборов')]") %&gt;% html_attr('href')
  • @Amanda 我使用的是 0.3.2(所以是最新版本)。这段代码和您的示例代码仍然没有为我返回任何内容。您使用的是类 Unix 操作系统吗?这可能证实这是一个编码问题。
  • 我在 Windows 机器上运行它,你在 Unix 上吗?你检查过 rvest 依赖的版本了吗?
  • 是的,这似乎是旧版本的 magrittr 的问题。不知道怎么没有更新。谢谢!

标签: r xpath web-scraping rvest


【解决方案1】:

这实际上是一个问题,因为没有更新 stringi 包,这不是依赖项,而是推荐的包。我建议任何遇到rvest 编码问题的人先尝试更新此软件包。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多