tylrr 2024-04-11 13:35 采纳率: 84.6%
浏览 3

如何用pyton从谷歌搜索结果中提取总结果数?

import httpx
import asyncio
async def main(keyword: str):
    async with httpx.AsyncClient() as client:
        response = await client.get(f"https://www.google.com/search?q={keyword}")
    return response.content.decode("latin1")

怎么样才能用Python从谷歌搜索结果中提取出总的结果数?
我用Python的httpx库获取到的内容里边没有包含这个结果数。是不是必须使用js 渲染才可以提取呢?谢谢

img

  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-11 13:35
    关注

    引自免费微信小程序:皆我百晓生

    要从Google搜索结果页面提取总结果数,你需要解析HTML内容,通常使用BeautifulSoup这样的库来完成。然而,Google使用JavaScript动态加载搜索结果,并且在原始HTML中并不直接显示总数。因此,直接通过HTTP请求获取的HTML可能不会包含结果总数。

    如果你想获取准确的搜索结果数量,你可能需要使用Selenium这样的工具,它能模拟浏览器行为,包括执行JavaScript。下面是一个基本示例,展示如何使用Python、Selenium和ChromeDriver来获取Google搜索结果的数量:

    首先,确保已经安装了selenium库:

    pip install selenium
    

    然后下载并配置ChromeDriver(根据你的Chrome版本选择相应的驱动程序):https://sites.google.com/a/chromium.org/chromedriver/downloads

    接下来是使用Selenium获取搜索结果数量的代码:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    def get_search_result_count(keyword: str, driver_path: str) -> int:
        # 设置无头模式并指定ChromeDriver路径
        chrome_options = Options()
        chrome_options.add_argument('--headless')  # 隐藏浏览器窗口
        driver = webdriver.Chrome(driver_path, options=chrome_options)
    
        try:
            # 访问Google搜索页面
            driver.get(f'https://www.google.com/search?q={keyword}')
    
            # 等待结果计数器元素加载
            result_count_element = WebDriverWait(driver, 10).until(
                EC.presence_of_element_located((By.XPATH, '//div[@id="result-stats"]'))
            )
    
            # 提取结果数量文本
            result_text = result_count_element.text
    
            # 解析并返回结果数量
            count_str = result_text.split(' ')[-1]
            return int(count_str.replace(',', ''))
        finally:
            # 关闭浏览器
            driver.quit()
    
    # 使用函数获取搜索结果数量
    search_keyword = "your search term"
    driver_path = "/path/to/chromedriver"  # 替换为你的ChromeDriver实际路径
    result_count = get_search_result_count(search_keyword, driver_path)
    print(f"Total search results for '{search_keyword}': {result_count}")
    

    在这个示例中,我们首先创建一个无头的Chrome浏览器实例,然后访问Google搜索页面。接着,我们等待包含结果数量的元素加载完成,然后提取文本并解析出整数结果。注意,这只是一个基础示例,实际使用时可能需要处理更多边缘情况和异常。

    另外,频繁地自动抓取Google搜索结果可能会违反其服务条款,所以在实际应用中请谨慎操作。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 4月11日
  • 创建了问题 4月11日

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line