Web Scraping Google Result с помощью R - PullRequest
0 голосов
/ 02 марта 2020

Я хочу отбросить все заголовки результатов поиска Google.

Например, если я гуглю 'asus', то я хочу очистить весь заголовок первой страницы.

Моя проблема в том, что мой результат пуст.

следующий код:

url = 'https://www.google.com/search?q=asus'
first_page <- read_html(url)
title = html_nodes(first_page,'h3.LC20lb.DKV0Md') %>% html_text() 

Причина, по которой я использую 'h3.LC20lb.DKV0Md', потому что я проверяю исходный код, как показано на рисунке , введите описание изображения здесь

1 Ответ

0 голосов
/ 02 марта 2020

Проблема в том, что имена классов в поиске Google не являются постоянными, поэтому вам нужно использовать имена тегов вместо имен классов. Мне проще с xpath, а не с css селекторами:

library(tidyverse)
library(rvest)

url = 'https://www.google.com/search?q=asus'
first_page <- read_html(url)
titles <- html_nodes(first_page, xpath = "//div/div/div/a/div[not(div)]") %>% 
          html_text()
titles <- titles[titles != ">"]
titles <- titles[titles != "View all"]
titles <- titles[nzchar(titles)]

df <- tibble(title  = titles[1:(length(titles)/2) * 2 - 1],
             url    = titles[1:(length(titles)/2) * 2])
df
#> # A tibble: 7 x 2
#>   title                                url                                      
#>   <chr>                                <chr>                                    
#> 1 ASUS United Kingdom                  https://www.asus.com › ...               
#> 2 Asus - Wikipedia                     https://en.wikipedia.org › wiki › Asus   
#> 3 Asus Store: Computers & Accessories~ https://www.amazon.co.uk › Asus-Computer~
#> 4 ASUS - Amazon.co.uk                  https://www.amazon.co.uk › stores › ASUS~
#> 5 ASUS RMA                             https://rma.asus-europe.eu               
#> 6 ASUS Subreddit                       https://www.reddit.com › ASUS            
#> 7 ASUS Deals | Laptops Direct          https://www.laptopsdirect.co.uk › asus

Создано в 2020-03-02 пакетом Представить (v0.3.0)

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