Веб-очистка нескольких твиттер-сайтов - PullRequest
0 голосов
/ 05 июля 2019

Цель состоит в том, чтобы очистить несколько твитов Twitter, их лайки и т. Д. Я почему-то не могу найти способ сделать это с несколькими разными твитами, для одного твита это работает отлично.

Я уже настроил очистку отдельных твитов в R. Код вставлен ниже. Но я не могу реализовать это для нескольких сайтов.

    site <- "https://twitter.com/btspavedyou/status/1146055736130019334"
    page <- read_html(site)

    handles <- page %>%
      html_nodes(".js-action-profile") %>%
      html_text() %>%
      sub(".*@", "", .) %>% 
      print()
    text_new <- page %>%
      html_nodes("p.TweetTextSize") %>%
      html_text() %>%
      print()     
    time <- page %>%
      html_nodes("._timestamp") %>%
      html_text() %>%
      print()

    all_data_tweet <- data.frame(
      page=site, 
      author=handles, 
      text=text_new, 
      time=time
      )
    all_data_tweet

Теперь при попытке повторить то же самое со следующими десятью страницами это не работает (пробовал искать и применять в сочетании с функциями.

  multiple_pages <- c("https://twitter.com/Swiftandoned/status/1146494919344717824", "https://twitter.com/Swiftandoned/status/1146149790016688128","https://twitter.com/baylee_corbello/status/1146494887875022854","https://twitter.com/angiegon00/status/1146494850486820864", "https://twitter.com/gallica_/status/1146494826289999872", "https://twitter.com/RomuHDV/status/1146494814604673029","https://twitter.com/mathebula_boity/status/1146494779666178049","https://twitter.com/mathebula_boity/status/1146487751774285825","https://twitter.com/mathebula_boity/status/1146494417697681408","https://twitter.com/mathebula_boity/status/1146494307324575744")

В результате получается, что то, что у меня есть для одного твита, производится для нескольких твитов:

                                                        page         author                                                 text    time
1 https://twitter.com/btspavedyou/status/1146055736130019334 KPOP_predict18           Sehun and Jisoo together in a drama, 2020. 2. Juli
2 https://twitter.com/btspavedyou/status/1146055736130019334         na1_27 Well i guess there is nothing about iKON AND HANBIN  2. Juli
3 https://twitter.com/btspavedyou/status/1146055736130019334    btspavedyou                               I'm sure he is 'okay'  2. Juli
4 https://twitter.com/btspavedyou/status/1146055736130019334         na1_27                          I really hope so, thank you 2. Juli

1 Ответ

1 голос
/ 05 июля 2019

Есть несколько способов решения, но, делая небольшие изменения, я бы использовал bind_rows из dplyr:

readTweet <-function(url){
  page <- read_html(url)

  handles <- page %>%
    html_nodes(".js-action-profile") %>%
    html_text() %>%
    sub(".*@", "", .)
  text_new <- page %>%
    html_nodes("p.TweetTextSize") %>%
    html_text()     
  time <- page %>%
    html_nodes("._timestamp") %>%
    html_text() 

  all_data_tweet <- data.frame(
    page = url, 
    author = handles, 
    text = text_new, 
    time = time
    )

  return(all_data_tweet)
}

df <- bind_rows(
  lapply(list_of_urls, readTweet)
  )

Вам не нужно создавать .id, так как у вас есть URL страницы в виде столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...