为了简单实现,将不附加其他请求信息,如HEAD中的用户浏览器信息等。
一、使用GET方法
使用GET方法应该算是最简单,最好操作的。以开心网的用户首页为例,网址统一为:http://www.kaixin001.com/home/?uid=xxxxxxx。其中的xxxxxxxx表示该用户的用户ID。用户首页,在GET方法,没有加入任何其他请求数据时,请求会进行重定向,定向到开心网的登录页。
新建一个控制台,并写入GET方法的代码,代码如下:
因未登录,可以看到,输出的页面,是登录页面的HTML源码:
二、使用POST方法,进行页面抓取
POST方法与GET方法相似,只是Method的方法重新设置为“POST”,把要POST的数据使用编码转化为Byte[]格式,再进行长度设置。在请求前,先获取HTTPWebRequest的请求流,把POST的数据写入,再执行请求。例子如下:
注:以上请自己寻找一个可以进行POST验证的网址进行抓取。
注意,POST时必须加以下代码,否则服务端无法获取到POST的数据
req.ContentType = "application/x-www-form-urlencoded";
三、抓取必须登录的页面
其实无论是以SESSION验证的,还是以COOKIE验证的,都必须得使用在请求中带相关COOKIE的值。要想取得COOKIE值,必须先用浏览器登录,然后再查看该登录所必须用到的COOKIE。例子以开心网不带ID的个人首页,http://www.kaixin001.com/home/。进行抓取。
若不加入COOKIE,则抓取到的HTML是重定向的HTML,即登录页面的HTML。例子代码如下:
因COOKIE涉及个人隐私,已对COOKIE进行了字符修改,若有需要用到的朋友,请自行登录,查找自己登录后的COOKIE值。
运行界面如下: