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

如何提取Google SERP标题关联链接并将数据写入CSV文件

问题修复方案

核心错误原因

yuRUbf类的div本身没有href属性,href是其内部嵌套的<a>标签的属性,你之前直接取div的文本内容自然拿不到链接。另外原代码还有两处影响运行的问题:

  1. terms变量被重复赋值,先赋值了示例列表又清空去读取未打开的f文件会触发报错
  2. 直接用默认参数的requests请求谷歌会被反爬拦截,需要添加请求头伪造浏览器身份

修复后完整代码

from bs4 import BeautifulSoup
import requests
import csv

# 读取搜索关键词文件
with open("web_search_terms.txt", "r", encoding="utf-8") as f:
    terms = [line.strip() for line in f if line.strip()]

# 添加请求头避免反爬拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

with open("web_urls.csv", "w", encoding="utf-8-sig", newline="") as f_out:
    writer = csv.writer(f_out)
    writer.writerow(["Search Term", "URL"])
    for t in terms:
        url = f"https://google.com/search?q={t}"
        print(f"Getting {url}")
        html_page = requests.get(url, headers=headers)
        soup = BeautifulSoup(html_page.content, "html.parser")
        divs = soup.find_all("div", attrs={"class": "yuRUbf"})
        for item in divs:
            # 定位div下的a标签,提取href属性
            link_tag = item.find("a")
            if link_tag and link_tag.get("href"):
                real_url = link_tag.get("href")
                writer.writerow([t, real_url])

关键修改说明

  • 补充请求头参数,避免谷歌返回403拒绝访问
  • 提取yuRUbf div内的a标签,调用get("href")获取链接地址,替换原有的get_text()方法
  • 优化了关键词读取和CSV写入的编码配置,避免中文乱码和多余空行问题
  • 新增链接存在性判断,避免空值导致写入报错

内容的提问来源于stack exchange,提问作者Jimmy Friedman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:15:03