|
认真看了wcymiss 大神强大的帖子,感觉很系统很全面。以前抓取过不少网站,也都没啥问题,没想到最近卡在winhttp这里了,连首页获取的数据都拿不回来,真是郁闷死了!希望大神有空了能给指点一下!俺卡在大门口好几天了……
Set winhttp = CreateObject("winhttp.winhttprequest.5.1") 'Set winhttp = CreateObject("MSXML2.XMLHTTP") 这样的话就没问题,
'但是就无法设置refer链接了,因此必须用winhttp
With winhttp
.Open "GET", "http://www.pss-system.gov.cn/sipopublicsearch/portal/index.shtml", False '没错,就是这个网,首页都不给winhttp明文看啊……
.SetRequestHeader "Connection", "Keep-Alive"
.SetRequestHeader "Accept-Language", "en-US"
.SetRequestHeader "Accept", "text/html, application/xhtml+xml, */*"
.SetRequestHeader "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)"
.SetRequestHeader "Accept-Encoding", "sdch" '这里换deflate什么的都试遍了,无论我发什么,服务器一定以gzip格式发回数据
.send
debug.print .responseBody '这里用.responseText会给个系统错误,提示“运行时错误,在多字节的目标代码页中,没有此Unicode字符可以映射到的字符”
这里得到的.responseBody是以gzip格式压缩的,用winrar解压后可以看到主页的文本,但是winhttp这个货不认识,虽然XMLHTTP不用解压识别都毫无压力,但是它不能伪造refer。好吧,开始在论坛里百度里狂搜gzip解压,各种折腾,发现没有适合我的系统的gzip.dll,谁让我是win7 64位系统呢?
在搜索的过程中,发现这些问题各路大神都曾提到过,可惜都是一句而过……
|
|