使用 firefox 中的“inpect element”工具查看 HTML。
本质上,我们可以看到你想从网页中抓取的每个元素都可以根据工具提示轻松区分:
鉴于此,我们可以使用 selenium 抓取网页以检索此信息。
(先用pip3 install -U selenium安装,再安装你喜欢的webdiverfrom the links here)
启动浏览器并使用类似于
的方式将其引导至谷歌趋势页面
╰─ 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 的类:
我们需要找到类名为feed-list-wrapper的div。
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+
你应该很快习惯硒。如果你对这里使用的方法有任何疑问,这里是selenium docs的链接