JAVA爬取页面出现405错误

Lomon---- 2019-01-25 11:23:48
在做爬取留言的测试时,出来405,网页是:http://liuyan.people.com.cn/threads/list?fid=1079
在用开发工具看XHR有queryThreadList有完整的JSON数据,但直接访问http://liuyan.people.com.cn/threads/queryThreadsList?fid=1079&lastItem=0出现HTTP Status 405 – Method Not Allowed
源网页加载JSON数据:
Threads.initThreadsListPage();
代码如下:
url="http://liuyan.people.com.cn/threads/queryThreadsList?fid=1079&lastItem=0";
Document doc = Jsoup.connect(url).get();
System.out.println("url:"+url+" doc:"+doc);
希望牛人提供帮助,如何获取完整留言的JSON,谢谢!
JSON如下:
{"result":"success","responseData":[{"tid":5656180,"userId":1840290,"fid":1079,"typeId":6,"domainId":9,"topicId":0,"nickName":"x***","subject":"第二次:乐化农民建

以上JAVA如何POST或获取数据,谢谢!
...全文
761 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
110成成 2019-01-30
  • 打赏
  • 举报
回复
引用 6 楼 Lomon---- 的回复:
你看有时间吗?项目需要完整人民网的留言,做个JAVA定时采集器,如果能做的话我们可以沟通下, 你把联系方式发我邮箱lma11@163.com,谢谢!


这个有分页,自己写个循环,一直抓取,定时器都是现成的,没什么难的。。
Lomon---- 2019-01-29
  • 打赏
  • 举报
回复
你看有时间吗?项目需要完整人民网的留言,做个JAVA定时采集器,如果能做的话我们可以沟通下, 你把联系方式发我邮箱lma11@163.com,谢谢!
110成成 2019-01-28
  • 打赏
  • 举报
回复
package com.java.activiti.controller;



import net.sf.json.JSONObject;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;


import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class python {
public static void main(String[] args) {
String url = "http://liuyan.people.com.cn/threads/queryThreadsList?fid=1079&lastItem=0";
HttpClient httpClient = null;
HttpPost httpPost = null;
HttpResponse response = null;
try {
httpClient = HttpClients.createDefault();
httpPost = new HttpPost(url);// 传入URL地址
httpPost.addHeader("Accept",
"pplication/json, text/javascript, */*; q=0.01");
httpPost.addHeader("Accept-Encoding", "gzip, deflate");// 设置请求头
httpPost.addHeader("Accept-Language",
"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");// 设置请求头
//httpPost.addHeader("Connection", "keep-alive");// 设置请求头
// httpPost.addHeader("Content-Length", "19");//设置请求头
//httpPost.addHeader("Content-Type",
// "application/x-www-form-urlencoded; charset=UTF-8");// 设置请求头

httpPost.addHeader("Referer",
"http://liuyan.people.com.cn/threads/list?fid=1079");// 设置请求头
//httpPost.addHeader("User-Agent",
// "Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/64.0");// 设置请求头
//httpPost.addHeader("X-Requested-With", "XMLHttpRequest");// 设置请求头

response = httpClient.execute(httpPost);// 获取响应
int statusCode = response.getStatusLine().getStatusCode();
System.out.println("HTTP Status Code:" + statusCode);
if (statusCode != HttpStatus.SC_OK) {
System.out.println("HTTP请求未成功!HTTP Status Code:"
+ response.getStatusLine());
}
HttpEntity httpEntity = response.getEntity();
String reponseContent = EntityUtils.toString(httpEntity);
EntityUtils.consume(httpEntity);
System.out.println("响应内容:" + reponseContent);
} catch (Exception e) {
e.printStackTrace();
}

}
}
Lomon---- 2019-01-25
  • 打赏
  • 举报
回复
不太理解,有详细代码?谢谢!
110成成 2019-01-25
  • 打赏
  • 举报
回复
110成成 2019-01-25
  • 打赏
  • 举报
回复
相信你应该也抓过包,不知道你可注意了请求头的信息,
请求头中有一项Referer: http://liuyan.people.com.cn/threads/list?fid=1079
把这项在你的代码中加上就可以了。

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧