爬虫简要概述
///
/// 1 爬虫,爬虫攻防
/// 2 下载html,log4net
/// 3 xpath解析html,获取数据和深度抓取
/// 4 惰性加载、Ajax加载数据、VUE数据绑定(O(∩_∩)0)
/// 5 不一样的属性和ajax数据的获取
/// 6 多线程抓取
///
/// 爬虫:是一个自动提取网页的程序
/// url开始–分析获取数据&找到url–递归下去–结束
/// 下载html–解析获取数据–数据保存
/// 数据为王:抓小说数据,做个内容站;
/// 电影/动漫下载站
/// 抓图片
/// 政府的公开招标数据,每天汇集这些数据
/// 。。。。
/// 爬虫的正义性问题:不违法;不问自取谓之偷;
/// 爬虫的攻防:robots协议—君子协定(360流氓),道德防线
/// 请求检测header–爬虫去都模拟一下
/// 用户登录–请求的时候带上cookie
/// 爬虫频率高限制IP(黑名单/返回个验证码)—多个ip(adsl拨号/168伪装IP/代理IP)
/// 验证码–有开源组件做图片识别/打码平台(如果有兴趣尝试对接,老师有账号)
/// 大招:数据js动态加载;转图片;js收集用户操作,然后提交;用户控件(可以收集更多信息)
/// 都是可以搞定的,道高一尺魔高一丈,浏览器的请求不能拒绝
///
第一步,获取html
HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;//模拟请求
//然后就是包装请求
request.ContentType = "text/html; charset=utf-8";// "text/html;charset=gbk";//
request.Host = "www.jd.com";
//request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
//request.Headers.Add("Referer", "http://list.yhd.com/c0-0/b/a-s1-v0-p1-price-d0-f0-m1-rt0-pid-mid0-kiphone/");
Encoding enc = Encoding.UTF8;
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)//发起请求
{
if (response.StatusCode != HttpStatusCode.OK)
{
logger.Warn(string.Format("抓取{0}地址返回失败,response.StatusCode为{1}", url, response.StatusCode));
}
else
{
try
{
StreamReader sr = new StreamReader(response.GetResponseStream(), enc);
html = sr.ReadToEnd();//读取数据
sr.Close();
}
catch (Exception ex)
{
logger.Error(string.Format($"DownloadHtml抓取{url}失败"), ex);
html = null;
}
}
}