You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python(含2.7版本)获取并打印谷歌搜索结果URL?

解决Python(含2.7)中提取并打印谷歌搜索结果URL的问题

嘿,我来帮你搞定这个问题!不管是通用Python版本还是Python 2.7,核心思路都是先获取谷歌搜索页面的HTML内容,再解析出里面的结果链接。先看看你的现有代码,有几个小语法问题得先修正,比如test = [] test.append("aa")这里得分开写或者加个分号,另外还得补充必要的库来处理HTML解析。

前置准备

首先得安装两个关键库:

  • requests:用来发送HTTP请求获取页面内容
  • beautifulsoup4:用来解析HTML页面,提取需要的链接

针对Python 2.7的特殊说明

因为Python 2.7已经停止维护,得安装兼容的旧版本库:

pip install requests==2.27.1
pip install beautifulsoup4==4.9.3

通用Python 3.x版本直接装最新版即可:

pip install requests beautifulsoup4

通用Python 3.x版本完整代码

import sys
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, parse_qs

# 检查是否传入了搜索关键词参数
if len(sys.argv) < 2:
    print("请传入搜索关键词作为命令行参数,比如:python script.py python教程")
    sys.exit(1)

search_keyword = sys.argv[1]
print(f"正在搜索关键词: {search_keyword}")

# 构造谷歌搜索URL,添加User-Agent模拟浏览器访问(避免被谷歌拦截)
main_url = "https://www.google.com/search?q="
final_url = main_url + search_keyword
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"
}

# 发送请求获取页面内容
req = requests.get(final_url, headers=headers)

# 检查请求是否成功
if req.status_code != 200:
    print(f"请求失败,状态码: {req.status_code}")
    sys.exit(1)

# 解析HTML页面,提取搜索结果链接
soup = BeautifulSoup(req.text, "html.parser")
# 谷歌搜索结果通常包裹在class为"yuRUbf"的div容器中
search_results = soup.find_all("div", class_="yuRUbf")

print("\n搜索结果URL列表:")
for result in search_results:
    a_tag = result.find("a")
    if a_tag and "href" in a_tag.attrs:
        raw_href = a_tag["href"]
        # 谷歌的链接是/url?q=真实URL&xxx的格式,需要提取q参数对应的真实链接
        parsed_url = urlparse(raw_href)
        real_url = parse_qs(parsed_url.query).get("q", [None])[0]
        if real_url:
            print(real_url)

Python 2.7版本适配代码

因为Python 2.7不支持f-string,且urllib模块结构不同,做以下调整:

import sys
import requests
from bs4 import BeautifulSoup
from urlparse import urlparse, parse_qs

# 检查命令行参数
if len(sys.argv) < 2:
    print("请传入搜索关键词作为命令行参数,比如:python script.py python教程")
    sys.exit(1)

search_keyword = sys.argv[1]
print("正在搜索关键词: %s" % search_keyword)

# 构造搜索URL并发送请求
main_url = "https://www.google.com/search?q="
final_url = main_url + search_keyword
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"
}

req = requests.get(final_url, headers=headers)

# 检查请求状态
if req.status_code != 200:
    print("请求失败,状态码: %d" % req.status_code)
    sys.exit(1)

# 解析并提取链接
soup = BeautifulSoup(req.text, "html.parser")
search_results = soup.find_all("div", class_="yuRUbf")

print("\n搜索结果URL列表:")
for result in search_results:
    a_tag = result.find("a")
    if a_tag and "href" in a_tag.attrs:
        raw_href = a_tag["href"]
        parsed_url = urlparse(raw_href)
        real_url = parse_qs(parsed_url.query).get("q", [None])[0]
        if real_url:
            print(real_url)

几个重要注意点

  • 一定要加User-Agent:谷歌会拦截没有浏览器标识的爬虫请求,添加后能避免大部分拦截问题
  • 页面结构可能变化:如果某天发现提取不到链接,右键打开谷歌搜索页面的"检查元素",看看搜索结果容器的class是否更新,调整find_all的参数即可
  • Python 2.7建议升级:虽然上面的代码能运行,但Python 2.7已经停止维护,长期来看还是建议迁移到Python 3.x版本

内容的提问来源于stack exchange,提问作者Utkarsh Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:21:40