使用Post方法模拟登陆爬取网页

 

最近弄爬虫,遇到的一个问题就是如何使用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;
} }

原文地址:
http://wangxin123.com/2016/12/19/%E4%BD%BF%E7%94%A8Post%E6%96%B9%E6%B3%95%E6%A8%A1%E6%8B%9F%E7%99%BB%E9%99%86%E7%88%AC%E5%8F%96%E7%BD%91%E9%A1%B5/

使用Post方法模拟登陆爬取网页(转)的更多相关文章

  1. 使用Post方法模拟登陆爬取网页

    最近弄爬虫,遇到的一个问题就是如何使用post方法模拟登陆爬取网页.下面是极简版的代码: import java.io.BufferedReader; import java.io.InputStre ...

  2. selenium自动化测试工具模拟登陆爬取当当网top500畅销书单

    selenium自动化测试工具可谓是爬虫的利器,基本动态加载的网页都能抓取,当然随着大型网站的更新,也出现针对selenium的反爬,有些网站可以识别你是否用的是selenium访问,然后对你加以限制 ...

  3. 使用进程池模拟多进程爬取url获取数据,使用进程绑定的回调函数去处理数据

    1 # 使用requests请求网页,爬取网页的内容 2 3 # 模拟使用进程池模拟多进程爬取网页获取数据,使用进程绑定的回调函数去处理数据 4 5 import requests 6 from mu ...

  4. 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)

    urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...

  5. PHP爬取网页的主要方法,你掌握了吗

    这篇文章讲的是PHP爬取网页的主要方法,主要流程就是获取整个网页,然后正则匹配(关键的). PHP抓取页面的主要方法,有几种方法是网上前辈的经验,现在还没有用到的,先存下来以后试试. file()函数 ...

  6. python(27)requests 爬取网页乱码,解决方法

    最近遇到爬取网页乱码的情况,找了好久找到了种解决的办法: html = requests.get(url,headers = head) html.apparent_encoding html.enc ...

  7. Selenium+Chrome/phantomJS模拟浏览器爬取淘宝商品信息

    #使用selenium+Carome/phantomJS模拟浏览器爬取淘宝商品信息 # 思路: # 第一步:利用selenium驱动浏览器,搜索商品信息,得到商品列表 # 第二步:分析商品页数,驱动浏 ...

  8. python3爬虫爬取网页思路及常见问题(原创)

    学习爬虫有一段时间了,对遇到的一些问题进行一下总结. 爬虫流程可大致分为:请求网页(request),获取响应(response),解析(parse),保存(save). 下面分别说下这几个过程中可以 ...

  9. [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

    [python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...

随机推荐

  1. css选择器的对比样式代码精简

    通常就分为这三大类:* 选定所有对象.通配选择符(Universal Selector)通常不建议使用通配选择符,因为它会遍历并命中文档中所有的元素,出于性能考虑,需酌情使用一.标签选择器,以开始标签 ...

  2. vultr系统重建

    vultr服务器重启后ssh连接不上,view console只能guest登录,遍寻方法,无解,无奈重装系统. 服务器地址:Los Angeles 系统: Ubuntu 14.04 x64 用户:r ...

  3. Windows live writer 2012 测试

    升级到win10,居然Windows live writer不能用了,装了好久就是装不上去,wlsetup-web.exe 在线安装失败,wlsetup-all.exe离线安装也失败了. 安装Blog ...

  4. python3.x 判断当前版本【简单版】

    import sys,string Major_Version_Number = 0 #当前python的主版本 Minor_Version_Number = 0 #当前python的次版本 def ...

  5. vue 表单操作

    <form class="mian__form" @submit.prevent="submit">     <ul>         ...

  6. Analysis Of The Causes Of Internal Symmetry Of Hydraulic Motor

    The main reasons why hydraulic motors have this symmetrical internal structure are as follows: The   ...

  7. 微信小程序(template的使用)

    小程序的template是一个模版功能,在创建一个template后,其他的页面可以引用,相比component较简单.方便! template只需要两个文件,一个wxss文件和wxml文件,也只有这 ...

  8. MongoDB的游标操作

    MongoDB的游标操作 制作人:全心全意 游标:查询的返回资源或接口,这个接口可以逐条查询 游标的声明 var cursor = db.collection名.find(); cursor.hasN ...

  9. 修改Python的镜像源

    Mac OS下修改Python的镜像源 步骤: 切换到家目录 创建目录 .pip 并切换到该目录 创建 pip.conf 文件并写入配置信息 [global] index-url = https:// ...

  10. Spring Boot 2 (二):Spring Boot 2 尝鲜-动态 Banner

    Spring Boot 2.0 提供了很多新特性,其中就有一个小彩蛋:动态 Banner,今天我们就先拿这个来尝尝鲜. 配置依赖 使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发 ...