Посмотрите на HTML, используя инструмент «inpect element» в Firefox.
По сути, мы можем видеть, что каждый элемент, который вы хотите очистить от веб-страницы, можно легко отличить по подсказке:
Учитывая это, мы можем использовать селен для очистки веб-страницы для получения этой информации.
(Установите сначала с помощью 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')
Теперь вы должны увидетьчто-то похожее на это:
Опять же, используя инструмент контроля элементов, получите класс div, который содержит каждый элемент для очистки:
Нам нужно найти 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+
Вы должны быстро привыкнуть к селену.Если у вас есть какие-либо сомнения по поводу методов, использованных здесь, вот ссылка на селен документы