【发布时间】:2016-11-16 18:58:40
【问题描述】:
我最近写了一个网络爬虫作为一个副项目,我构造它的方式是它使用System.Net.WebClient的DownloadString函数来下载指定地址的html,然后做一些字符串操作来提取所有html 中包含的链接,然后在它找到的所有链接上重复该过程(跳过它已经抓取的任何内容)。
它适用于大多数地址,但是当我以 www.yahoo.com 作为种子开始它时,它会做一些非常奇怪的事情。而不是从 DownloadString 调用中获取 html 标记,而是得到一堆乱码。
我对@987654325@ 功能的理解是,它基本上会返回您在网页上view page source 时看到的内容,但事实并非如此,因为当我在浏览器中对www.yahoo.com 执行此操作时,我按预期查看 HTML。
简单地看了一下,我最初的想法是,看起来字符串是用不同的编码器编码的,而不是用来解码它的编码器,但我看不到手动设置下载时要使用的编码的方法通过System.Net.WebClient 类的字符串。
这是我收到的部分文字:
‹Ä½y“£FÖ7úÿó)4í™ûQ«Ä.è;^´ïû~ûvH€Ö ÷›€ÈL©ªì‰{» gÉ“'OîÉ¿ÿQî•Æ‹~%cûÿùwøŸŒ¥þþEÜ¥|ÉØ’cüþEsr“Ñ—ŒbK¾KËlδâÚûãg윻2}×Ïy€S°õ3úü/w 2žB†©š.íí ³±+·7s®“9XÚQórže˜AƼŒªùëÀÝfÊ×ÿÊë€" µdÙ¾¤k_2~p¶µß¿È
所以我最初的问题是,有没有人知道我从www.yahoo.com 提取 html 时是否做错了什么?如果是这样,还有另一种我应该拉动html的方法吗?我的下一个问题是,如果这是设计使然,那么他们是如何做到这一点的?他们为什么要争先恐后?他们是否试图阻止竞争对手抓取他们的网站?
【问题讨论】:
标签: html vb.net web encoding webclient