Google Ежедневный поиск тренда поиска - PullRequest
0 голосов
/ 18 сентября 2018

Я научился просматривать веб-страницы и хотел бы почерпнуть данные из ежедневного поискового тренда Google здесь: https://trends.google.com/trends/trendingsearches/daily?geo=US Данные будут включать поисковые ключевые слова, их ранги, частоты поиска на ежедневной основе.

Я попытался очистить R с помощью библиотеки rvest в начале, но при извлечении команды удалил пустые данные.Я думаю, html структура сайта слишком сложна, чем основана на rvest?Поэтому я хотел бы узнать лучший способ, который можно применить к сайту.

Я искал некоторую информацию, относящуюся к ежедневному поиску, но не смог найти, так как большинство постов было посвящено извлечению данных Google Trend, а не ежедневному поиску.

Каким будет эффективный способ извлечения данных с веб-сайта или, в более общем плане, такого рода веб-сайт?Я счастлив изучать любые другие инструменты, кроме R и иметь базовые знания в Python и Javascript.Если бы кто-нибудь мог дать мне подсказку, то я буду копаться в этом, но в настоящий момент я даже не знаю, с чего начать.

Спасибо,

1 Ответ

0 голосов
/ 18 сентября 2018

Посмотрите на HTML, используя инструмент «inpect element» в Firefox.

По сути, мы можем видеть, что каждый элемент, который вы хотите очистить от веб-страницы, можно легко отличить по подсказке:

The tooltip used

Учитывая это, мы можем использовать селен для очистки веб-страницы для получения этой информации.

(Установите сначала с помощью pip3 install -U seleniumи установите ваш любимый веб-браузер по ссылкам здесь )

Запустите браузер и перенаправьте его на страницу трендов Google, используя что-то похожее на

╰─ ipython3
Python 3.7.0 (default, Jun 29 2018, 20:13:13)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from selenium import webdriver

In [2]: browser = webdriver.Firefox()
   ...: browser.get('https://trends.google.com/trends/trendingsearches/daily?geo=US')

Теперь вы должны увидетьчто-то похожее на это:

What you see on starting selenium webdriver

Опять же, используя инструмент контроля элементов, получите класс div, который содержит каждый элемент для очистки:

What to scrape

Нам нужно найти div с классом с именем feed-list-wrapper.

In [3]: list_div = browser.find_element_by_class_name("feed-list-wrapper")

In [4]: list_div
Out[4]: <selenium.webdriver.firefox.webelement.FirefoxWebElement (session="b889702e-7e2b-7448-9180-c9fb3d1ff641", element="cad96530-3444-9d4f-a8e8-b7da780f5751")>

После того, как вы закончите, просто получите списокдетали div:

In [5]: details_divs = list_div.find_elements_by_class_name("details")

И, например, получить заголовок (вы должны пониматькод на данный момент)

In [6]: for detail_div in details_divs:
    ...:     print(detail_div.find_element_by_class_name("details-top").find_element_by_xpath("div/span/a").text)
    ...:
Captain Marvel
Celia Barquin Arozamena
Yom Kippur
Lethal White
National Cheeseburger Day 2018
Ind vs HK
Mario Kart
Barcelona
Emilia Clarke
Elementary
Angela Bassett
Lenny Kravitz
Lil Uzi Vert
Handmaid's Tale
Mary Poppins Returns trailer
Hannah Gadsby

Другой пример, чтобы получить количество просмотров:

In [7]: for detail_div in details_divs:
    ...:     title = detail_div.find_element_by_class_name("details-top").find_element_by_xpath("div/span/a").text
    ...:     search_count = detail_div.find_element_by_xpath('..').find_element_by_class_name("search-count-title").text
    ...:     print("Title : {title} \t\t\t Searchs : {search_count}".format(title=title, search_count=search_count))
    ...:
Title : Captain Marvel           Searchs : 500 k+
Title : Celia Barquin Arozamena              Searchs : 200 k+
Title : Yom Kippur           Searchs : 100 k+
Title : Lethal White             Searchs : 50 k+
Title : National Cheeseburger Day 2018           Searchs : 50 k+
Title : Ind vs HK            Searchs : 50 k+
Title : Mario Kart           Searchs : 50 k+
Title : Barcelona            Searchs : 50 k+
Title : Emilia Clarke            Searchs : 50 k+
Title : Elementary           Searchs : 20 k+
Title : Angela Bassett           Searchs : 20 k+
Title : Lenny Kravitz            Searchs : 20 k+
Title : Lil Uzi Vert             Searchs : 20 k+
Title : Handmaid's Tale              Searchs : 20 k+
Title : Mary Poppins Returns trailer             Searchs : 20 k+
Title : Hannah Gadsby            Searchs : 20 k+

Вы должны быстро привыкнуть к селену.Если у вас есть какие-либо сомнения по поводу методов, использованных здесь, вот ссылка на селен документы

...