首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >链接重定向问题-使用Rvest在R中进行Web抓取

链接重定向问题-使用Rvest在R中进行Web抓取
EN

Stack Overflow用户
提问于 2020-01-23 06:33:41
回答 1查看 239关注 0票数 0

当我使用Rvest工具从新闻网站抓取链接时,我经常偶然发现重定向到另一个链接的链接。在这些情况下,我只能抓取第一个链接,而第二个链接实际上包含数据。例如:

代码语言:javascript
运行
复制
library(dplyr)
library(rvest)
scraped.link <- "http://www1.folha.uol.com.br/folha/dinheiro/ult91u301428.shtml"

article.title <- read_html(scraped.link) %>%
      html_nodes('body') %>%
      html_nodes('.span12.page-content') %>%
      html_nodes('article') %>%
      html_nodes('header') %>%
      html_nodes('h1') %>%
      html_text()
article.title
#> character(0)

redirected.link <- "https://www1.folha.uol.com.br/mercado/2007/06/301428-banco-central-volta-a-intervir-no-mercado-para-deter-queda-do-cambio.shtml"

article.title <- read_html(redirected.link) %>%
      html_nodes('body') %>%
      html_nodes('.span12.page-content') %>%
      html_nodes('article') %>%
      html_nodes('header') %>%
      html_nodes('h1') %>%
      html_text()
article.title
#> "Banco Central volta a intervir no mercado para deter queda do câmbio"

有没有办法使用第一个链接获得第二个链接?这个网站只保留了第一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-23 08:40:09

是的,页面通过javascript‘location.replace’重定向,所以只需使用正则表达式提取脚本标记的html文本中"location.replace“第一个实例之后的第一个引用项:

代码语言:javascript
运行
复制
library(dplyr)
library(rvest)
scraped.link <- "http://www1.folha.uol.com.br/folha/dinheiro/ult91u301428.shtml"
link.regex   <- "(.*?location[.]replace.*?\")(.*?)(\".*)"

read_html(scraped.link)      %>%
  html_nodes('script')       %>%
  html_text()                %>%
  gsub(link.regex, "\\2", .)  
#> [1] "http://www1.folha.uol.com.br/mercado/2007/06/301428-banco-central-volta-a-intervir-
#> no-mercado-para-deter-queda-do-cambio.shtml"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59869210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档