【发布时间】:2021-06-14 09:56:28
【问题描述】:
我正在创建一个简单的程序,它接受用户的搜索输入和他们想要接收的链接数量。但是,我的代码有 2 个问题。
-
当我打印出链接时,它还包括图片、新闻等的链接...我想知道如何才能只保留与搜索相关的链接。
String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num; Document doc = Jsoup.connect(searchURL).userAgent("Mozilla/5.0").get(); Elements results = doc.select("a[href]");但是,使用
a[href]过滤文档会包括页面上的所有链接。我还尝试使用h3.r > a,它根本没有返回任何结果,还有a > h3,它解决了我当前的问题,但它只会显示标题而不是实际链接。这是我想摆脱的输出的一部分:
Title: Google
Link: https://www.google.com/?sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQOwgC
Title: Google
Link: https://www.google.com/?num=5&output=search&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQPAgE
Title: News
Link: https://www.google.com/search?q=java&num=5&source=lnms&tbm=nws&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQ_AUICCgB
Title: Images
Link: https://www.google.com/search?q=java&num=5&source=lnms&tbm=isch&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQ_AUICSgC
Title: Books
Link: https://www.google.com/search?q=java&num=5&source=lnms&tbm=bks&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQ_AUICigD
Title: Maps
Link: https://maps.google.com/maps?q=java&num=5&um=1&ie=UTF-8&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQ_AUICygE
Title: Videos
Link: https://www.google.com/search?q=java&num=5&source=lnms&tbm=vid&sa=X&ved=0ahUKEwifoOa-p7bvAhUDqlkKHS8fCsIQ_AUIDCgF
...
- 因此,我最终得到的链接比请求的数量多得多,而且我认为它还包括页面的子链接(例如:当您搜索 Java 时,第一个链接是 java.com,及其子链接,是下载页面)。
简而言之,我希望能够过滤掉 google 链接,例如图片、新闻、地图、购物等……并且只包括页面的主要链接。
【问题讨论】:
标签: java css text filter jsoup