最近公司有要求抓取一些头条号的数据, 涉及到部分加密字段的逆向, 在这方面我还是小白阶段,所以只能使用爬虫抓取一些数据,都是些最简单的,我需要对账号的阅读数,评论数以及文章标题进行数据分析。 于是展开了艰难的爬虫探索之旅,一开始只是少量的爬取几个账号的历史数据简单的分析下,但是太少的数据并没有什么意义,所以需要加大数据获取量,可是有一点就是,今日头条有反爬虫机制,如果通过机器批量下载存在风险,如何避过反爬虫机制又不需要花大量时间,我请教了大神的到的经验,遇到反爬机制最好的办法就是上代理呀,代理质量越优质越好。例如这家www.16yun.cn。 最重要的一点就是获取数据,那么我们通过以下的方式获取数据,还可以分享一下代理的使用方式给大家参考,
代码语言:javascript复制// 要访问的目标页面
string targetUrl = "https://www.toutiao.com/";
// 代理服务器(产品官网 www.16yun.cn)
string proxyHost = "http://t.16yun.cn";
string proxyPort = "31111";
// 代理验证信息
string proxyUser = "16EDEWIU";
string proxyPass = "205517";
// 设置代理服务器
WebProxy proxy = new WebProxy(string.Format("{0}:{1}", proxyHost, proxyPort), true);
ServicePointManager.Expect100Continue = false;
var request = WebRequest.Create(targetUrl) as HttpWebRequest;
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.Method = "GET";
request.Proxy = proxy;
//request.Proxy.Credentials = CredentialCache.DefaultCredentials;
request.Proxy.Credentials = new System.Net.NetworkCredential(proxyUser, proxyPass);
// 设置Proxy Tunnel
// Random ran=new Random();
// int tunnel =ran.Next(1,10000);
// request.Headers.Add("Proxy-Tunnel", String.valueOf(tunnel));
//request.Timeout = 20000;
//request.ServicePoint.ConnectionLimit = 512;
//request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";
//request.Headers.Add("Cache-Control", "max-age=0");
//request.Headers.Add("DNT", "1");
//String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(proxyUser ":" proxyPass));
//request.Headers.Add("Proxy-Authorization", "Basic " encoded);
using (var response = request.GetResponse() as HttpWebResponse)
using (var sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
string htmlStr = sr.ReadToEnd();
}
获取到数据后就是需要对数据进行清理分析,这也是一个不小工程,爬虫还得花时间好好用,虽然还没有达到理想的爬虫效果,但是也取得了一部分进展,下次接着更新。