我尝试通过自己的客户端请求网页,但返回的网页缺少内容。当我尝试 Telnet 请求该页面时,也会发生同样的情况。我尝试过使用此处找到的代码和剥离版本(两者都返回相同的结果):
http://coding.debuntu.org/c-linux-socket-programming-tcp-simple-http-client
我请求的网页如下,可以通过浏览器轻松访问,但是当我尝试使用自己的客户端访问它时,我在 Telnet 和代码中都丢失了大部分内容。我尝试过调整缓冲区大小,一旦这给出了稍大的结果,但在第二次运行时内容就消失了。
http://www.asx.com.au/asx/research/companyInfo.do?by=asxCode&asxCode=MQG
如何发出页面请求并获取完整页面源代码?
最佳答案
我只是尝试使用以下请求行请求该页面:
GET /asx/research/companyInfo.do?by=asxCode&asxCode=MQG HTTP/1.0
UserAgent: Myself
我得到的结果是:
HTTP/1.0 200 OK
Age: 36
Date: Wed, 30 Jan 2013 07:12:03 GMT
Content-Length: 38060
Content-Type: text/html;charset=ISO-8859-1
Server: Apache
Content-Language: en
也包括浏览器获取的整个页面内容。我猜您找不到所需信息的问题是由于页面包含动态(JavaScript)部分,这些部分在页面显示在浏览器中后立即加载更多信息。
如果您想从此页面获取特定信息,则必须剖析页面内容,分析 JavaScript 部分,并对这些部分如何检索信息的界面进行逆向工程。
旁注:如果您负担得起(在空间和复杂性方面),请使用像 curl 这样的库这已经涵盖了实现 HTTP 时必须注意的许多问题。
关于c - C 客户端和 telnet 上的部分页面返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596344/