首页 > 解决方案 > 如何使用 RVEST 从网站抓取超链接?

问题描述

我在尝试从新闻网站抓取所有链接 url 时遇到问题。

https://www.lightreading.com/archives.asp?section_id=120&piddl_month=12&piddl_year=2020

这是站点链接,我正在尝试抓取文章标题上的所有超链接 URL。下面是我想出的代码 - 认为“.card-title”是一个类,“href”是一个属性,

library(httr)
library(rvest)
library(readr)

url <- paste('https://www.lightreading.com/archives.asp?section_id=120&piddl_month=12&piddl_year=2020')

data_url <- read_html(url) %>%
  html_nodes('.card-title') %>%
  html_attr("href") %>%
  html_text()

UseMethod(“xml_text”)中的错误:没有适用于“xml_text”的适用方法应用于“字符”类的对象

这是我收到的错误消息。我究竟做错了什么?

标签: rweb-crawlerrvest

解决方案


错误是因为您已经有一个字符向量,而不是文档/节点/节点集,由以下方式返回:

read_html(url) %>%
  html_nodes('.card-title') %>%
  html_attr("href")

因此,在此之后,您尝试调用的附加 hml 节点方法会引发html_text()错误。只需删除最后的通话并保留为:

library(httr)
library(rvest)
library(readr)

url <- paste('https://www.lightreading.com/archives.asp?section_id=120&piddl_month=12&piddl_year=2020')

data_url <- read_html(url) %>%
  html_nodes('.card-title') %>%
  html_attr("href")

文档

html_text() 提取节点内的文本

预计将被调用:

参数:x 文档、节点或节点集。


推荐阅读