HTTPclient POST 有问题的网站

2024-02-04

我正在尝试从 a 中检索一些数据web site http://www.atm-mi.it/en/Pages/default.aspx.

我编写了一个 java 类,它似乎在许多站点上都工作得很好,但它不适用于这个特定的站点,该站点在输入 fomr 中使用了大量的 javascript。

正如您从代码中看到的,我指定了从 HTML 源中获取名称的输入字段,但也许该网站不接受此类 POST 请求?

如何模拟用户交互来检索生成的 HTML?

package com.transport.urlRetriver;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

public class UrlRetriver {


    String stationPoller (String url, ArrayList<NameValuePair> params) {

        HttpPost postRequest;
        HttpResponse response;
        HttpEntity entity;
        String result = null;

        DefaultHttpClient httpClient = new DefaultHttpClient();


        try {

            postRequest = new HttpPost(url);

            postRequest.setEntity((HttpEntity) new UrlEncodedFormEntity(params));
            response = httpClient.execute(postRequest);

            entity = response.getEntity();

            if(entity != null){
              InputStream inputStream = entity.getContent();
              result = convertStreamToString(inputStream);
            }



        } catch (Exception e) {

            result = "We had a problem";

        } finally {

            httpClient.getConnectionManager().shutdown();

        }



        return result;

    }





    void ATMtravelPoller () {




        ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(2);

        String url = "http://www.atm-mi.it/it/Pagine/default.aspx";

        params.add(new BasicNameValuePair("ctl00$SPWebPartManager1$g_afa5adbb_5b60_4e50_8da2_212a1d36e49c$txt_address_s", "Viale romagna 1"));

        params.add(new BasicNameValuePair("ctl00$SPWebPartManager1$g_afa5adbb_5b60_4e50_8da2_212a1d36e49c$txt_address_e", "Viale Toscana 20"));

        params.add(new BasicNameValuePair("sf_method", "POST"));

        String result = stationPoller(url, params);

        saveToFile(result, "/home/rachele/Documents/atm/out4.html");

    }

    static void saveToFile(String toFile, String pos){
          try{
                // Create file 
                FileWriter fstream = new FileWriter(pos);
                BufferedWriter out = new BufferedWriter(fstream);
                out.write(toFile);
                //Close the output stream
                out.close();
                }catch (Exception e){//Catch exception if any
                  System.err.println("Error: " + e.getMessage());
                }
              }

    private static String convertStreamToString(InputStream is) {
          BufferedReader reader = new BufferedReader(new InputStreamReader(is));
          StringBuilder stringBuilder = new StringBuilder();

          String line = null;
          try {
            while ((line = reader.readLine()) != null) {
              stringBuilder.append(line + "\n");
            }
          } catch (IOException e) {
            e.printStackTrace();
          } finally {
            try {
              is.close();
            } catch (IOException e) {
              e.printStackTrace();
            }
          }
          return stringBuilder.toString();
        }

}

在我看来,可能存在具有动态值的 JavaScript 生成字段,以防止自动代码抓取网站。发送您要下载的具体网站。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTPclient POST 有问题的网站 的相关文章

随机推荐

  • PySide 入门 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我决定学习 Python Gui 开发 由于 PyQt 不是免费的 所以选择了 PySide 但是 与 PyQt 不同 PySide 没有
  • 使用 jQuery mobile 下载文件

    我对 jquery mobile 相当陌生 在尝试链接 jquery mobile 项目中的文件进行下载时遇到错误 我希望用户能够从应用程序下载 zip 文件 但要么出现页面加载错误 要么在新页面中显示未定义 我尝试使用锚标记来链接要下载的
  • f:convertNumber 不会对十进制尾随字母字符引发转换错误

    我在用
  • 无法调用插入的 Javascript 片段

    我正在尝试将 Javascript 片段插入网页 然后使用 blue prism 调用它 这样做的目的是分析搜索返回哪些元素 以确定整个流程中下一步该去哪里 我已经使用 IE 11 开发者控制台在目标网站上测试了 Javascript 代码
  • 在 digitalocean 上安装 PHP 7

    我尝试在 digitalocean 上使用 PHP 7 但文件内的脚本无法运行 这是我用来安装的 sudo apt get install php7 libapache2 mod php7 php7 mcrypt 我可以执行 php ver
  • .NET:无法将对象转换为它实现的接口

    我有一个类 TabControlH60 它既继承自基类 UserControl 又实现了一个接口 IFrameworkClient 我使用 NET Activator 类实例化该对象 使用返回的实例 我可以转换为 UserControl 基
  • signpass 错误:找不到 pass.com.xxx.xxxx 的身份

    我使用Apple 存折演示passbook materials 中的signpass 来创建一个 pkpass 文件 我已创建了我的通行证类型ID 并更改了pass json 中的passTypeIdentity 当我执行时 signaps
  • C语言中如何判断一个进程是否正在运行?

    我想知道某个进程是否正在运行 我不想使用任何系统 命令 是否有任何基于 C 的函数可以让您知道进程是否正在运行 我想提供进程名称并想知道它是否正在运行 Thanks 当然可以 使用kill 2 http man7 org linux man
  • SQLALCHEMY - 迭代数据

    当我使用 SQLALchemy 时 如何迭代列名 Eg Column Name 1 Column Name 2 Column Name 3 etc 第二个问题是我有以下查询 root dbsession query MyTable filt
  • 在 HttpClient 和 WebClient 之间做出决定 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们的 Web 应用程序在 NET Framework 4 0 中运行 UI 通过 Ajax 调用来调用控制器方法 我们需要使用供应商
  • HTTP 请求标头和缓存

    当请求具有相同的路径但不同的标头时 HTTP 代理应如何决定使用缓存的响应 以此 HTTP 请求 响应为例 GET resource HTTP 1 1 Host example org X Filter foo bar HTTP 1 1 2
  • R 中作为 x 轴标签的图标

    我想绘制这样的东西 摘自本文 http wwwconference org www2008 papers pdf p665 adamic pdf其中图标 在本例中为小图形 用作刻度标签 I get this far where icons
  • 从另一个部分视图更新部分视图 - ASP.NET MVC2

    我希望有两个局部视图 一个用于SEARCH和一个用于SEARCHRESULTS 我要更新SEARCHRESULTS当点击 搜索 按钮时SEARCH部分视图形式 SEARCHRESULTS需要将表单数据从SEARCH局部视图 我不完全确定该怎
  • 注释为 ResponseStatus 的自定义异常的动态消息

    我试图为我的自定义异常提供动态消息 如下面的代码片段所示 ResponseStatus value HttpStatus NOT FOUND reason Entity not found public class EntityNotFou
  • 向包含组件发送操作

    如果我有两个组件 nav menu 导航按钮 and nav menu是一个块组件contain nav button像这样 nav menu Lorem ipsum dolor sit amet consectetur adipisici
  • 无法启动 Kibana 7.5.0 致命错误 未对配置文件进行任何更改

    启动 Kibana 7 5 时出现致命错误 我没有配置任何内容 我只是运行 elasticsearch bat 也是 v7 5 和 kibana bat error root cause type mapper parsing except
  • 使位图在 x 方向可绘制平铺,但在 y 方向拉伸

    我有一个图像用作相对布局的背景 图像需要水平平铺才能形成图案 我可以使用以下代码使图像水平平铺 BitmapDrawable b3 BitmapDrawable getResources getDrawable R drawable bac
  • 在数据框中创建“升序 ID”

    我在 R 中有这些数据 column1 c A B C column2 c AA BB CC DD column3 c AAA na pad lt function x len x 1 len makePaddedDataFrame lt
  • 从 AWS S3 读取 CSV 文件时获取“Errno::ENOENT: No such file or directory @ rb_sysopen”

    我有部署到 Heroku 的应用程序 我添加了通过 CSV 上传用户的功能 为此 我提供了 CSV 上传功能 Used Paperclip gem 这是我用于读取文件和创建新用户的代码 def import file CSV foreach
  • HTTPclient POST 有问题的网站

    我正在尝试从 a 中检索一些数据web site http www atm mi it en Pages default aspx 我编写了一个 java 类 它似乎在许多站点上都工作得很好 但它不适用于这个特定的站点 该站点在输入 fom