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

如何用JSoup获取谷歌视频搜索首个结果URL(标签选择器问题)

嘿,我来帮你搞定这个谷歌视频搜索结果抓取的问题!

解决JSoup获取谷歌视频搜索首个结果URL的问题

问题分析

你提到的.g>.r>a选择器大概率已经失效了——谷歌经常调整页面结构,旧的选择器很容易跟不上变化。另外编码处理不到位、请求标识被识别为爬虫,也可能导致你拿不到正确的HTML内容。

修正后的可运行代码

我整理了一个适配当前谷歌视频搜索页面的版本,解决了编码、反爬拦截和选择器适配的问题:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;

public class GoogleVideoScraper {
    public static String getYoutubeURLByName(String search) throws IOException {
        // 正确编码搜索关键词,避免乱码导致请求无效
        String encodedKeyword = URLEncoder.encode(search, StandardCharsets.UTF_8.name());
        // 构造谷歌视频搜索的标准URL(tbm=vid表示搜索视频)
        String searchUrl = "https://www.google.com/search?tbm=vid&q=" + encodedKeyword;

        // 模拟真实浏览器请求,避免被谷歌反爬拦截
        Document doc = Jsoup.connect(searchUrl)
                .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
                .timeout(10000)
                .get();

        // 适配2024年谷歌视频搜索结果的选择器(后续若失效需重新检查页面结构)
        Elements videoResultLinks = doc.select("div#search div.g div.yuRUbf a");

        if (!videoResultLinks.isEmpty()) {
            String rawLink = videoResultLinks.first().attr("href");
            // 解析谷歌的跳转链接,提取真实目标URL
            if (rawLink.startsWith("/url?q=")) {
                return rawLink.split("&")[0].replace("/url?q=", "");
            }
            return rawLink;
        }
        return null; // 无结果时返回null
    }

    public static void main(String[] args) {
        try {
            String firstVideoUrl = getYoutubeURLByName("python入门教程");
            System.out.println("首个视频结果URL: " + firstVideoUrl);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关键修复点

  • 编码规范:用URLEncoder统一处理搜索关键词的UTF-8编码,避免中文/特殊字符导致的请求异常
  • 反爬规避:设置真实浏览器的User-Agent字符串,防止谷歌把请求识别为爬虫而返回异常页面
  • 选择器更新:替换旧的.g>.r>a为当前有效的选择器div#search div.g div.yuRUbf a,适配谷歌最新的视频结果容器结构
  • 跳转链接解析:谷歌搜索结果的链接是带跳转参数的/url?q=xxx格式,需要提取出真实的目标URL

注意事项

  • 谷歌的页面结构随时可能变动,如果后续代码失效,需要打开谷歌视频搜索页面,用浏览器开发者工具重新定位结果元素的选择器
  • 频繁请求可能触发谷歌的反爬限制,建议添加适当的请求延迟,或者考虑使用谷歌官方的自定义搜索API(更稳定但可能涉及收费)

内容的提问来源于stack exchange,提问作者3code

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:15:53