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 有问题的网站 的相关文章

  • JavaScript 重定向到新窗口

    我有以下代码 它根据下拉列表的值重定向到页面 我如何使其在新窗口中打开 function goto form var index form select selectedIndex if form select options index
  • volatile、final 和synchronized 安全发布的区别

    给定一个带有变量 x 的 A 类 变量 x 在类构造函数中设置 A x 77 我们想将 x 发布到其他线程 考虑以下 3 种变量 x 线程安全 发布的情况 1 x is final 2 x is volatile 3 x 设定为同步块 sy
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 如何将 Google Charts 与 Vue.js 库一起使用?

    我正在尝试使用 Vue js 库使用 Google Charts 制作图表 但我不知道如何添加到 div 这是我尝试做的 这是如何使用普通 javascript 添加图表 这是文档的代码示例 https developers google
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • Eclipse 选项卡宽度不变

    我浏览了一些与此相关的帖子 但它们似乎并不能帮助我解决我的问题 我有一个项目 其中 java 文件以 2 个空格的宽度缩进 我想将所有内容更改为 4 空格宽度 我尝试了 正确的缩进 选项 但当我将几行修改为 4 空格缩进时 它只是将所有内容
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • Angular 2+ 安全性;保护服务器上的延迟加载模块

    我有一个 Angular 2 应用程序 用户可以在其中输入个人数据 该数据在应用程序的另一部分进行分析 该部分仅适用于具有特定权限的人员 问题是我们不想让未经授权的人知道how我们正在分析这些数据 因此 如果他们能够在应用程序中查看模板 那
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js)Vue Js

    我从 GitHub 下载了一个我和我的朋友正在开发的项目 但是当我尝试运行时 npm run serve 我收到这个错误 src main js 中的错误 Module build failed from node modules babe
  • 在 vue.js 中访问数组对象属性

    给定以下数组vue js packageMaps Object packageMap 0 Object Id 16 PackageType flag list ProductCode F BannerBase packageMap 1 Ob
  • 如何仅在最后一个
  • 处给出透明六边形角度?
  • 我必须制作这样的菜单 替代文本 http shup com Shup 330421 1104422739 My Desktop png http shup com Shup 330421 1104422739 My Desktop png
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 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