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

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

QQ%E6%88%AA.jpg


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/

转载于:https://www.cnblogs.com/wangxin37/p/6398743.html

### 回答1: 要使用Python爬取集思录的数据,首先需要登录集思录,可以使用Python的Requests库来模拟登录。具体的步骤如下:1. 准备好用户名和密码;2. 使用Requests库发送POST请求,将用户名和密码提交到登录页面;3. 根据服务器返回的响应结果,判断是否登录成功。 ### 回答2: 要使用Python登录集思录并爬取数据,可以按照以下步骤进行: 1. 安装必要的Python库和工具: 首先,确保已经安装了Python解释器,可以在官方网站下载并安装。然后,使用命令`pip install requests`和`pip install beautifulsoup4`来安装用于发送HTTP请求和解析HTML的库。 2. 分析登录过程: 打开集思录网站,通过查看网页源代码或使用开发者工具分析登录过程。找到登录表单,并确定需要提交的用户名和密码字段。 3. 创建登录函数: 使用`requests`库发送POST请求模拟登录操作。首先,构建一个包含用户名和密码的`payload`字典。然后,使用`requests.post`方法发送POST请求,将`payload`作为参数传递给该方法。接下来,可以检查返回的响应,确保登录成功。 4. 登录并获取数据: 在登录函数中添加适当的代码来获得所需数据。可以使用`beautifulsoup4`库来解析HTML响应,并根据需要提取所需的数据。 下面是一个简单的示例: ```python import requests from bs4 import BeautifulSoup def login(username, password): # 构建登录表单数据 payload = { 'username': username, 'password': password } # 发送POST请求模拟登录 response = requests.post('https://www.jisilu.cn/login/', data=payload) # 检查登录是否成功 if response.status_code == 200: print('登录成功!') # 在这里添加获取数据的代码 else: print('登录失败!') if __name__ == '__main__': username = 'your_username' password = 'your_password' login(username, password) ``` 在这个示例中,首先将用户名和密码传递给登录函数,然后通过POST请求模拟用户登录。如果登录成功,可以在登录函数内部添加代码以获取所需的数据。 ### 回答3: 要使用Python爬取集思录的数据,可以按照以下步骤进行操作: 首先,我们需要安装Python的相关依赖库,例如requests、beautifulsoup等。可以使用pip命令进行安装。 接下来,需要了解集思录的网站结构和数据获取方式。可以使用浏览器的开发者工具来分析网页的网络请求和HTML结构,以便找到目标数据所在的URL和相应的HTML元素。 然后,使用Python的requests库发送HTTP请求,获取集思录网站上的HTML内容。具体可以使用get或post方法,并传递对应的URL和参数。 获取到HTML内容后,我们可以使用beautifulsoup库对HTML进行解析,并定位到目标数据所在的HTML元素。通过调用beautifulsoup提供的方法,如find、findall等,可以按照HTML标签、属性等筛选出所需数据。 最后,将所需数据保存到本地文件或数据库中,或进行进一步的数据处理和分析。 需要注意的是,爬取网站数据需要遵守法律法规和网站的使用协议,避免对网站造成过大的负担和侵犯他人的权益。在使用爬虫之前,最好与网站的所有者或管理者进行沟通,以免引起纠纷。 以上就是使用Python爬取集思录数据的一般步骤,具体实现可能因网站的特点而有所差异,可以根据具体情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值