抓取谷歌的 "人们还询问 "内容

如何使用 Python 抓取 Google 的 "人们还询问 "内容

在本文中,我将指导青年如何使用 Python 搜刮 PAA、提取有价值的信息并存储数据以供分析。您需要具备基本的 Python 知识,包括 requests library 和 BeautifulSoup.我还会介绍一些避免在搜索时被 Google 屏蔽的技巧。

什么是 Google 的 People Also Ask?

谷歌的 "人们还问" 功能对搜索结果页面很有帮助。它会显示与用户初始搜索相关的问题。每个问题都会扩展出一个简短的答案,让用户快速了解相关主题。这对搜索引擎优化很有帮助,因为它有助于识别受众经常查找的热门问题。

最佳付费解决方案

要自动收集这些数据,您可以使用以下工具 Bright Data 的 SERP API 或 谷歌搜索自动完成 API 收集搜索建议。您还可以将这些工具与 Google Sheets 相结合,以便于组织和分析。

查看我的文章 最好的 5 个 SERP API.我与该文章中列出的任何服务机构都没有任何关系。

步骤 1:设置环境

首先,您需要设置一个 Python 环境并安装必要的库。本教程需要 requests 用于处理 HTTP 请求,BeautifulSoup 用于解析 HTML 内容。打开命令提示符或终端,输入以下命令:

pip install requests beautifulsoup4

安装后,这些库允许您请求 Google 的搜索结果页面,并解析 HTML 以查找 PAA 问题。

步骤 2:连接到 Google 的搜索结果页面

在项目文件夹中创建名为 main.py 的文件。然后,导入所需的库,并设置主要的 Google 搜索功能。

下面介绍如何构建功能:

import requests
from bs4 import BeautifulSoup
def google_search(query):
query = query.replace(' ', '+')
url = f "https://www.google.com/search?q={query}"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
print("Connection successful!")
return BeautifulSoup(response.text、 "html.parser")
else:
print(f"Erro {response.status_code}")
return None

此代码片段设置了一个名为 google_search 的函数,将查询作为输入。它将查询格式化以用于 URL,并设置适当的标题以模拟浏览器请求。如果连接成功,将使用 BeautifulSoup 解析 HTML 内容。

步骤 3:查找 PAA 问题

准备好 HTML 页面后,下一步就是识别和提取 PAA 问题。通过检查 Google 的页面源,您会发现 PAA 问题通常包含在一个特定的 HTML 类中。让我们创建一个函数来定位和提取问题。

在 main.py 中前面的代码段下面添加以下代码:

def extract_questions(soup):
questions = []
if soup:
for question in soup.select(span.CSkcDe):
questions.append(question.get_text())
return questions

在此函数中,soup.select 用于查找所有带有 span.CSkcDe 类的元素,而 span.CSkcDe 通常是 PAA 问题的容器。如果 Google 的 HTML 结构发生变化,可能需要进行调整,因此如果遇到问题,请务必验证页面源。

步骤 4:保存结果

提取问题后,必须保存数据以便进一步分析。JSON 是一种适合存储结构化数据的格式,因为它易于读取,可用于数据管道或与分析工具集成。

下面介绍如何保存带有时间戳的结果:

import json
import os
from datetime import datetime
def save_results(query, questions):
results = {
"date": datetime.now().strftime("%Y-%m-%d"),
"query": query,
"questions": questions
}
if os.path.exists("results.json"):
with open("results.json", "r", encoding="utf-8") as file:
data = json.load(file)
else:
data = []
data.append(results)
with open("results.json", "w", encoding="utf-8") as file:
json.dump(data, file, indent=4)
print("Results saved to results.json")

该函数检查 results.json 文件是否存在。如果存在,函数将追加新的结果;否则,将创建一个新文件。每个条目包括当前日期、查询和问题列表。通过结构化数据,您可以分析一段时间内的历史趋势。

步骤 5:运行脚本

完成基础功能后,您就可以将它们组合起来,创建最终产品。下面是完整的脚本:

def main(query):
soup = google_search(query)
questions = extract_questions(soup)
save_results(query, questions)
query = "how to start a blog"
main(query)

此脚本将执行 Google 搜索、提取并保存 PAA 问题。在终端运行 main.py 将输出结果,您可以在 results.json 文件中查看结果。

成功搜索的其他技巧

  1. 避免 Google 服务器超载: Google 的反僵尸措施会阻止过多的请求,因此要在请求之间引入延迟。可以考虑使用 time.sleep() 来增加间隔时间。
  2. 轮换用户代理和代理: 在多个请求中使用一个用户代理或 IP 可能会导致拦截。考虑使用轮换代理和不同的用户代理字符串来模仿真实用户的行为。
  3. 设置定期运行: 由于 PAA 问题会随着时间的推移而变化,因此自动定期运行此脚本可以揭示不断变化的搜索趋势。使用 cron(适用于 Linux/macOS)或任务调度程序(适用于 Windows)等工具进行调度非常有效。
  4. 考虑第三方解决方案: 对于大容量或专业化需求,使用 API(如 Bright Data 的 SERP API 或 Google Search Autocomplete API)可以精简和简化数据收集工作,尤其适用于大型项目。

结论

使用 Python 对 Google 的 "People Also Ask"(PAA)部分进行抓取,可以深入了解用户正在搜索的内容,从而帮助创建更有针对性的内容并改善搜索引擎优化。利用本指南中的 Python 代码,您可以从 PAA 部分自动收集数据,以有组织的格式存储数据,并跟踪长期趋势。

在设置中添加 API 和其他工具可以使数据更加有用,尤其是对大型项目而言。在使用代理和轮换用户代理时,请遵循 Google 的使用政策,以避免阻塞并保持请求限制。随着时间的推移,这种方法可以建立一个有价值的数据集,为内容策略提供信息,紧跟流行话题,并促进搜索引擎优化。

类似文章