gpt4 book ai didi

java - 没有用于解析谷歌新闻内容的输出

转载 作者:搜寻专家 更新时间:2023-10-31 20:00:17 25 4
gpt4 key购买 nike

对于我的代码,我想获取 google 新的搜索标题和 URL。

以前是可以的,但是不知道为什么现在不行了?

Google 是改变了它的 CSS 结构还是什么?

谢谢

   public static void main(String[] args) throws UnsupportedEncodingException, IOException {

String google = "http://www.google.com/search?q=";

String search = "stackoverflow";

String charset = "UTF-8";

String news="&tbm=nws";


String userAgent = "ExampleBot 1.0 (+http://example.com/bot)"; // Change this to your company's name and bot homepage!

Elements links = Jsoup.connect(google + URLEncoder.encode(search , charset) + news).userAgent(userAgent).get().select( ".g>.r>.a");

for (Element link : links) {
String title = link.text();
String url = link.absUrl("href"); // Google returns URLs in format "http://www.google.com/url?q=<url>&sa=U&ei=<someKey>".
url = URLDecoder.decode(url.substring(url.indexOf('=') + 1, url.indexOf('&')), "UTF-8");

if (!url.startsWith("http")) {
continue; // Ads/news/etc.
}
System.out.println("Title: " + title);
System.out.println("URL: " + url);
}
}

最佳答案

如果问题是“如何让代码再次运行?”除非保存副本,否则任何人都很难知道旧页面的样子。

我像这样分解了您的选择,它对我有用。

    String string = google + URLEncoder.encode(search , charset) + news;
Document document = Jsoup.connect(string).userAgent(userAgent).get();
Elements links = document.select( ".r>a");

当前页面源码是这样的

       <div class="g">
<table>
<tbody>
<tr>
<td valign="top" style="width:516px"><h3 class="r"><a href="/url?q=https://www.bleepingcomputer.com/news/security/marlboro-ransomware-defeated-in-one-day/&amp;sa=U&amp;ved=0ahUKEwis77iq7cDRAhXI7IMKHUAoDs0QqQIIFCgAMAE&amp;usg=AFQjCNFFx-sJdU814auBfquRYSsct2c8WA">Marlboro Ransomware Defeated in One Day</a></h3>

结果:标题:一日打败万宝路勒索软件网址:https://www.bleepingcomputer.com/news/security/marlboro-ransomware-defeated-in-one-day/

标题:Stack Overflow 为开发人员的简历带来新变化网址:https://techcrunch.com/2016/10/11/stack-overflow-puts-a-new-spin-on-resumes-for-developers/

已编辑 - 时间范围这些 URL 参数看起来很糟糕。
添加后缀 &tbs=cdr%3A1%2Ccd_min%3A5%2F30%2F2016%2Ccd_max%3A6%2F30%2F2016

但这部分“min%3A5%2F30%2F2016”包含您的最短日期。 2016 年 5 月 30 日。min%3A +(年月)+ %2F +(月日)+ %2F + 年在“max%3A6%2F30%2F2016”中是您的最大日期。 2016 年 6 月 30 日。max%3A +(年月)+ %2F +(月日)+ %2F + 年

这是在 05/30/2016 和 06/30/2016 之间搜索 Mindy Kaling 的完整 URL https://www.google.com/search?tbm=nws&q=mindy%20kaling&tbs=cdr%3A1%2Ccd_min%3A5%2F30%2F2016%2Ccd_max%3A6%2F30%2F2016

关于java - 没有用于解析谷歌新闻内容的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41582941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com