R-帮我从网页上删除链接

时间:2019-07-12 14:13:54

标签: r web-scraping rvest

我正在从IMDB电影列表中抓取数据。 我想剪贴每部电影的链接,但无法正确识别其在页面上的存储位置。

这是链接的一部分的存储方式: link screenshot

我尝试过的事情:

link<-html_nodes(strona_int, '.lister-item-header+ a href')
link<-html_text(link)

整个代码

install.packages("rvest")
install.packages("RSelenium")
library(rvest)
library(RSelenium)

#open webprowser (in my case Firefox, but can be chrome or internet explorer)
rD <- rsDriver(browser=c("firefox"))
remDr <- rD[["client"]]

#set the start number for page link
ile<-seq(from=1, by=250, length.out = 1)

#empty frame for data
filmy_df=data.frame()

#loop reading the data
for (j in ile){
  #set the link for webpage
  newURL<-"https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start="
  startNumberURL<-paste0(newURL,j)

#open webpage
remDr$navigate(startNumberURL)

#read html code of the page
strona_int<-read_html(startNumberURL)

#rank section
rank_data<-html_nodes(strona_int,'.text-primary')
#konwersja rankingu na text
rank_data<-html_text(rank_data)
#konwersja na numeric
rank_data<-as.numeric(rank_data)

link<-html_nodes(strona_int, '.lister-item-header+ a href')
link<-html_text(link)

#release date
year<-html_nodes(strona_int,'.lister-item-year')
#konwersja na text
year<-html_text(year)
#usuniecie non numeric
year<-gsub("\\D","",year)
#ustawienie jako factor
year<-as.factor(year)

#title
title_data<-html_nodes(strona_int,'.lister-item-header a')
#konwersja tytulu na text
title_data<-html_text(title_data)

#temporary data frame
filmy_df_temp<-data.frame(Rank=rank_data,Title=title_data,Release.Year=year)

#temp df to target df
filmy_df<-rbind(filmy_df,filmy_df_temp)
}

#close browser
remDr$close()
#stop Selenium
rD[["server"]]$stop()

期望的解决方案: 每部电影的报废链接,以后可以根据需要使用。

1 个答案:

答案 0 :(得分:0)

收集链接不需要硒。

链接是a标签,位于父类lister-item-header中。您可以对它们进行匹配,然后提取href属性。您需要添加“ https://www.imdb.com”的协议和域

在CSS选择器中:

.lister-item-header a

点是父类的class selector;两者之间的间隔是descendant combinator;最后的a是子a标签的type selector

library(rvest)
library(magrittr)

url <- "https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start="
links <- read_html(url) %>% html_nodes(., ".lister-item-header a") %>% html_attr(., "href")

添加协议和域的一种方法:

library(rvest)
library(magrittr)
library(xml2)

base <- 'https://www.imdb.com'
url <- "https://www.imdb.com/search/title/?title_type=feature&release_date=,2018-12-31&count=250&start="
links <- url_absolute(read_html(url) %>% html_nodes(., ".lister-item-header a") %>% html_attr(., "href"), base)

参考:

  1. https://www.rdocumentation.org/packages/xml2/versions/1.2.0/topics/url_absolute
  2. https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors