我使用JSOUB清理所有网页,如下所示:
public static final String GOOGLE_SEARCH_URL = "https://www.google.com/search";
String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num +
"&start=" + start;
Document doc = Jsoup.connect(searchURL)
.userAgent("Mozilla/5.0 Chrome/26.0.1410.64 Safari/537.31")
// .ignoreHttpErrors(true)
.maxBodySize(1024*1024*3)
.followRedirects(true)
.timeout(100000)
.ignoreContentType(true)
.get();
Elements results = doc.select("h3.r > a");
for (Element result : results) {
String linkHref = result.attr("href");
}
但我的问题是,代码一开始运行良好。
过一会儿,它会停止,总是给我“HTTP错误获取URL。状态=503错误”。
当我添加时。ignoreHttpErrors(true)它可以正常工作,但不会刮伤web。
*搜索词是我想要搜索的任何关键字,num是我需要检索的页数。
有人能帮忙吗?这是否意味着谷歌阻止了我的IP刮取?如果是的话,请问有什么解决方案或者我如何替换谷歌搜索结果?
我需要帮助。谢谢你,
503错误通常意味着你试图删除的网站会阻止你,因为他们不希望非人类用户浏览他们的网站。尤其是谷歌。
不过,你可以做一些事情。比如
基本上,你需要尽可能人性化,以防止网站阻止你。
编辑:
我需要提醒你,刮谷歌搜索结果是违反他们的ToS的,可能是非法的,这取决于你在哪里。
你所能做的
您可以使用代理旋转服务来掩盖您的请求,以便谷歌将其视为来自多个区域的请求。如果您感兴趣,请使用Google代理旋转器服务
。它可能很昂贵,这取决于您如何处理数据。
然后编写一些模块来更改每个请求的User-Agent
,以减少Google对您的请求的怀疑。
抓取每个页面后添加随机延迟。我建议大约1-5秒。随机延迟使您的请求对Google来说更像人类
最后,如果一切都失败了,您可能希望查看Google搜索API并使用他们的API,而不是删除他们的网站。
我正在尝试从这里连接并检索页面标题。如果我从链接中删除“.com”之后的所有内容,代码运行良好。以下代码不起作用: 如果代码有效,返回的标题应该是“Sammamish Washington-Google News”。代码返回的错误是:“org.jsoup.HttpStatusException:HTTP错误获取URL。状态=405,URL=https://news.google.com/news/
我只是下载了最新版本的j汤(1.7.1)并遵循官方代码(更改了url)。然后我得到了“超文本传输协议错误获取url” 我的代码有什么问题?似乎错误只是发生在Android项目,因为我在一个工作正常的Java项目做同样的事情。 注意:-我已经添加了Internet权限
我想连接到https://www.notebooksbilliger.de/但对于以下代码,它不起作用: 为什么我得到405状态?我如何解决这个问题? 非常感谢... 塞巴斯蒂安
JSoup似乎可以处理我尝试过的所有URL,但这一个给了我400个错误。 我得到的错误是:
我一直在寻找这个问题,假设这个问题是使用用户代理修复的,但事实并非如此<我要做的是从请愿书中取出cookies,这是代码 程序在第
我正在尝试登录一个网站(https://dashboard.ngrok.com/user/login)使用jsoup。我对GET请求没有任何问题,但当我尝试使用凭证执行POST请求时,我收到: HTTP错误获取URL。状态=400 我尝试为请求设置一个更好的头,使用我在连接发出POST请求时发送的相同参数。 我也尝试过这种类型的请求: 结果显示: 线程“main”组织中出现异常。jsoup。Htt