python - 使用 selenium Python 检索 Google 趋势数据中的所有元素

标签 python selenium selenium-webdriver google-trends

我正在尝试编写一个 Python 程序来从 Google Trends (GT) 收集数据 - 具体来说,我想自动打开 URL 并访问标题中显示的特定值。 我已经编写了代码,并且能够成功地抓取数据。但我比较了代码返回的数据和网址中存在的数据,结果仅返回了部分。 例如在下图中,代码返回第一个标题“Manchester United F.C. • Tottenham Hotspur F.C.”但实际网站有4个结果“曼联·托特纳姆热刺、国际冠军杯、曼彻斯特 ”。 google trends image

screenshot output of code

我们目前已尝试了页面中所有可能的定位元素,但我们仍然无法资助解决此问题。我们不想为此使用 scrapy 或 beautiful soup

    import pandas as pd
    import requests
    import re
    from bs4 import BeautifulSoup
    import time
    from selenium import webdriver

    links=["https://trends.google.com/trends/trendingsearches/realtime?geo=DE&category=s"] 

    for link in links:
        Title_temp=[]
        Titile=''
        seleniumDriver = r"C:/Users/Downloads/chromedriver_win32/chromedriver.exe" 
        chrome_options = Options()
        brow = webdriver.Chrome(executable_path=seleniumDriver, chrome_options=chrome_options)
        try:
            brow.get(link) ## getting the url
            try:
                content = brow.find_elements_by_class_name("details-top")
                for element in content:
                    Title_temp.append(element.text)    
                Title=' '.join(Title_temp)
            except:
                Title=''       
            brow.quit()

        except Exception as error:
            print error
            break

    Final_df = pd.DataFrame(
        {'Title': Title_temp
        })

最佳答案

据我所知,数据是从可以直接调用的 API 端点检索的。我展示了如何调用,然后仅提取标题(请注意,除了 API 调用中的标题之外,还会返回更多信息)。您可以探索返回内容的广度(包括文章片段、网址、图像链接等)here .

import requests
import json

r = requests.get('https://trends.google.com/trends/api/realtimetrends?hl=en-GB&tz=-60&cat=s&fi=0&fs=0&geo=DE&ri=300&rs=20&sort=0')
data = json.loads(r.text[5:])
titles = [story['title'] for story in data['storySummaries']['trendingStories']]
print(titles)

关于python - 使用 selenium Python 检索 Google 趋势数据中的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57205181/

相关文章:

firefox - Headless 中的 Selenium FirefoxDriver 出现错误

javascript - Protractor map 函数返回未定义

C# Selenium 或 WebBrowser 替代品模仿人类

python - pytest下unittest subTest元素的输出不足

python - 将打印的所有内容记录到文件中

python - cv2.imshow() 函数如何在 BGR 模型中工作?

java - 如何在 selenium webdriver 中使用 css 检查按钮是否被禁用

python - 无法使用 pyplot、pandas : _tkinter. TclError 绘制图形:无显示名称且无 $DISPLAY 环境变量

java - 关于 Selenium : find element by its child link text的问题

python - 意外的 Selenium 日志记录错误