【发布时间】: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®ion=76&sub_region=76&type=0&vibid=276200077535", encoding = "windows-1251")
test %>% html_nodes(xpath="//a[contains(text(), 'Сводная таблица о результатах выборов')]/@href")
但是,尽管链接文本是直接从 test %>% html_nodes("a") %>% html_text() 的输出中复制的,但它始终返回 {xml_nodeset (0)}。
还有其他方法可以尝试基于文本选择链接吗?另外,这可能是编码问题吗?网站是用 windows-1251 编码的,我也用这种编码保存了我的 R 文件。
【问题讨论】:
-
您使用的是什么版本的 rvest?当我运行你的代码时,我得到
{xml_nodeset (1)}后跟 href = 链接,所以我不能重复你的错误。如果它只是您想要的链接,您可能需要考虑将代码更改为:test %>% html_nodes(xpath="//a[contains(text(), 'Сводная таблица о результатах выборов')]") %>% html_attr('href') -
@Amanda 我使用的是 0.3.2(所以是最新版本)。这段代码和您的示例代码仍然没有为我返回任何内容。您使用的是类 Unix 操作系统吗?这可能证实这是一个编码问题。
-
我在 Windows 机器上运行它,你在 Unix 上吗?你检查过 rvest 依赖的版本了吗?
-
是的,这似乎是旧版本的 magrittr 的问题。不知道怎么没有更新。谢谢!
标签: r xpath web-scraping rvest