使用 Python 和 Playwright 从谷歌趋势中抓取数据,可以详细检查关键词的流行程度,并监测趋势随时间的变化。这种方法为营销分析提供了重要的洞察力。
在深入学习代码之前,请确保安装了以下工具:
您可以使用 pip 安装 Playwright:
pip install playwright
要在异步代码中使用 Playwright,还需要使用 asyncio 库,该库默认包含在 Python 3.7+ 中。
我们将使用强大的浏览器自动化工具 Playwright 来浏览 Google Trends 网站并下载包含趋势数据的 CSV 文件。本教程将指导您完成整个过程。
首先,确保 Playwright 已安装:
playwright install
如果不想安装所有浏览器,只需使用此命令安装 chromium 浏览器。
playwright install chromium
像 Google 这样的平台会主动打击僵尸活动,因此在进行搜索时,使用代理服务器是必不可少的。代理可以实现 IP 轮换,有助于降低被拦截的风险。在我们的脚本中,我们使用私有代理来路由我们的请求。
proxy = {
"server": "IP:PORT",
"username": "your_username",
"password": "your_password"
}
用代理服务器的实际数据替换 IP、端口、用户名和密码变量。
在本例中,我们首先浏览 google.com,绕过任何可能的拦截,然后再进入 Google Trends 页面。这样做是为了模仿正常的用户行为,避免被检测到。
这一步涉及初步行动,以防止被 Google 标记和屏蔽:
import asyncio
from playwright.async_api import Playwright, async_playwright
async def run(playwright: Playwright) -> None:
# 使用代理设置启动浏览器
browser = await playwright.chromium.launch(headless=False, proxy={
"server": "IP:PORT",
"username": "your_username",
"password": "your_password"
})
# 创建新的浏览器上下文
context = await browser.new_context()
# 打开新页面
page = await context.new_page()
# 访问 Google 以模拟正常浏览
await page.goto("https://google.com")
接下来,直接导航到所需数据所在的 Google Trends 页面。Google Trends 提供以 CSV 格式直接下载数据的选项,这有助于提取过程。单击 "下载 "按钮开始数据下载的操作可实现自动化。这样就无需人工干预即可提取趋势数据。一旦 "下载 "按钮可见,自动化操作就应继续点击该按钮,开始下载包含所需趋势数据的 CSV 文件。
# 谷歌趋势导航
await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
# 等待并点击下载按钮
async with page.expect_download() as download_info:
await page.get_by_role("button", name="file_download").first.click()
# 处理下载
download = await download_info.value
print(download.suggested_filename)
下载的 CSV 文件会自动保存在本地设备的指定目录中。
# 保存下载的文件
await download.save_as("/path/to/save/" + download.suggested_filename)
以下是使用 Playwright 将 Google Trends 数据下载为 CSV 文件的完整代码:
import asyncio
import os
import re
from playwright.async_api import Playwright, async_playwright
async def run(playwright: Playwright) -> None:
# 使用代理设置启动浏览器
browser = await playwright.chromium.launch(headless=False, proxy={
"server": "IP:PORT",
"username": "your_username",
"password": "your_password"
})
# 创建新的浏览器上下文
context = await browser.new_context()
# 打开新页面
page = await context.new_page()
# 访问 Google 以避免检测
await page.goto("https://google.com")
# 导航至谷歌趋势
await page.goto("https://trends.google.com/trends/explore?q=%2Fg%2F11bc6c__s2&date=now%201-d&geo=US&hl=en-US")
# 点击下载按钮
async with page.expect_download() as download_info:
await page.get_by_role("button", name=re.compile(r"file_download")).first.click()
# 保存下载的文件
download = await download_info.value
destination_path = os.path.join("path/to/save", download.suggested_filename)
await download.save_as(destination_path)
# 关闭上下文和浏览器
await context.close()
await browser.close()
async def main() -> None:
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
根据本指南,您可以有效下载趋势数据、管理代理轮换和绕过僵尸保护机制。要有效避免拦截,使用可靠的代理服务器至关重要。强烈推荐使用住宅代理服务器,它提供动态 IP 地址,无需轮换配置。另外,静态 ISP 代理服务器也很有效;购买所需的 IP 数量,并在脚本中设置定期 IP 轮换。无论选择哪种方式,都能确保将拦截和验证码风险降至最低,从而更快、更顺利地进行数据搜刮。
Мы получили вашу заявку!
Ответ будет отправлен на почту в ближайшее время.
С уважением proxy-seller.com!
评论: 0