0

当我尝试使用阅读一些网页时,页面源如下所示:

<p/><table border="1" align="center" cellpadding="10"><tbody><tr><td><a href="/cgi-bin/query/C?c101:./temp/~c1011jI5AQ" title="Displays without navigation or highlighting">Printer Friendly</a>[<a href="/home/billdwnloadhelp.html">Help</a>]</td>

但是当我使用Python的urllib2、urllib或者requests来读取这个网页时,结果是一样的如下:

<p/><a href="/[<a href="%s">Help</a>]</td>`/C?query:c101" Printer Friendly</a><p/>

那么,为什么我无法阅读所有信息并丢失了非常重要的部分C?c101:./temp/~c1011jI5AQ???

我尝试用Java阅读,也是同样的情况。而且我尝试使用不同的操作系统,比如 Mac、Linux 或 Windows,结果也是一样的。那么我该如何解决这个问题呢?

4

1 回答 1

0

我不确定是否理解正确:第二个示例是您使用 Python 或 Java 得到的。第一个?是通过浏览器查看“源代码”获得的吗?在这种情况下,三种可能的情况:

  • 首先(不太可能),浏览器显示源的“查看源代码”由 JavaScript 修改/更改/生成
  • 二、服务器根据“客户端签名”生成不同的内容(正式的,用户代理识别
  • 三、服务器根据您浏览器中存储的cookies提供不同的内容

作为测试,您可能会使用curl下载页面并进行一些比较——它将非常适合该任务,因为在许多选项中,您有机会更改提供给服务器的用户代理标识——因此,假装是 IE 或 Firefox 或任何你喜欢的:

curl(1) 卷曲 手动卷曲(1)

姓名
       curl - 传输一个 URL

概要
       curl [选项] [URL ...]

描述
       curl 是一种从服务器传输数据或向服务器传输数据的工具,它使用
       支持的协议(HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、
       TELNET、LDAP 或文件)。该命令旨在在没有用户的情况下工作
       相互作用。

       curl 提供了大量有用的技巧,比如代理支持、用户验证
       tication、FTP 上传、HTTP post、SSL 连接、cookies、文件传输
       提供简历等等。正如您将在下面看到的,功能的数量将
       让你头晕目眩!

[...]

      -A/--用户代理
              (HTTP) 指定要发送到 HTTP 服务器的用户代理字符串。
              如果此字段未设置为,一些做得不好的 CGI 会失败
              “Mozilla/4.0”。要对字符串中的空格进行编码,请将
              带单引号的字符串。这也可以用
              -H/--header 选项当然。

              如果多次设置此选项,则最后一个将是
              一个用过的。
于 2013-06-17T17:41:15.917 回答