最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页。
下面是极简版的代码:
import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.util.HashMap;public class test { //post请求地址 private static final String POST_URL = ""; //模拟谷歌浏览器请求 private static final String USER_AGENT = ""; //用账号登录某网站后 请求POST_URL链接获取cookie private static final String COOKIE = ""; //用账号登录某网站后 请求POST_URL链接获取数据包 private static final String REQUEST_DATA = ""; public static void main(String[] args) throws Exception { HashMap<String, String> map = postCapture(REQUEST_DATA); String responseCode = map.get("responseCode"); String value = map.get("value"); while(!responseCode.equals("200")){ map = postCapture(REQUEST_DATA); responseCode = map.get("responseCode"); value = map.get("value"); } //打印爬取结果 System.out.println(value); } private static HashMap<String, String> postCapture(String requestData) throws Exception{ HashMap<String, String> map = new HashMap<>(); URL url = new URL(POST_URL); HttpURLConnection httpConn = (HttpURLConnection) url.openConnection(); httpConn.setDoInput(true); // 设置输入流采用字节流 httpConn.setDoOutput(true); // 设置输出流采用字节流 httpConn.setUseCaches(false); //设置缓存 httpConn.setRequestMethod("POST");//POST请求 httpConn.setRequestProperty("User-Agent", USER_AGENT); httpConn.setRequestProperty("Cookie", COOKIE); PrintWriter out = new PrintWriter(new OutputStreamWriter(httpConn.getOutputStream(), "UTF-8")); out.println(requestData); out.close(); int responseCode = httpConn.getResponseCode(); StringBuffer buffer = new StringBuffer(); if (responseCode == 200) { BufferedReader reader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { buffer.append(line); } reader.close(); httpConn.disconnect(); } map.put("responseCode", new Integer(responseCode).toString()); map.put("value", buffer.toString()); return map; }}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机使用Post方法模拟登陆爬取网页的实现方法
后端开发2023-05-31
php实现登陆后跳转网页的方法
后端开发2023-06-20
dedecms实现首页顶部会员登陆框的方法
后端开发2022-06-12
vsftpd用户禁止ssh登陆的实现方法
后端开发2022-06-04
python3实现抓取网页资源的 N 种方法
后端开发2022-06-04
使用React Hooks模拟生命周期的实现方法
后端开发2023-02-08
Python实现周期性抓取网页内容的方法
后端开发2022-06-04
PHP开发指南:使用POST方法传递参数实现页面跳转
后端开发2024-03-07
让两个用户同时远程登陆XP的实现方法
后端开发2023-06-02
Android使用libgdx实现模拟方向键控制角色移动的方法
后端开发2022-06-06
MyBatis-Plus实现分页的方法使用详解
后端开发2024-04-02
java使用Filter实现自动登录的方法
后端开发2023-05-31
python使用xlrd模块读取excel的方法实例
后端开发2024-04-02
SQL查询连续登陆7天以上的用户的方法实现
后端开发2024-04-02
Android实现使用微信登录第三方APP的方法
后端开发2022-06-06
用简单,易懂的方法将数据库和网页连接起来(例:登陆注册页面)
后端开发2023-09-10
Python3使用requests包抓取并保存网页源码的方法
后端开发2022-06-04
网站使用微信小程序扫码登录的实现方法
后端开发2023-09-20
Java模拟rank/over函数实现获取分组排名的方法详解
后端开发2023-05-15
使用react-color实现前端取色器的方法
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧