学习python也有一段时间了,今天整理了一份爬取网站数据的基本步骤分享给大家,对于很多爬虫高手来说可能没有什么意义,但是对新学爬虫的小伙伴来说可以参考下。爬取一个网站的数据整体是比较简单的,难度大小跟这个网站有关。以下就是一些小编整理的步骤: 1、设定爬取目标, 目标网站:微博 https://weibo.com/ 目标数据每天更新的热搜关键词的链接、标题、标签。 2、 分析目标网站 爬取页面:https://s.weibo.com/weibo?q=%E4%BF%9D%E7%A0%94&topic_ad= 待爬取数据:网页下的超链接的标题和链接,标签列表 目标网站反爬:网站反爬的方式有很多,都有应对策略,比如遇到网站限制IP访问次数时,只需要加上代理IP就可以轻松解决。代理IP的选择有很多,比如这里我们给大家示例代理使用方式的亿牛云代理。代理如何在程序里面添加,示例代码如下: Plain Text 复制代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 // 要访问的目标页面 string targetUrl = “http://httpbin.org/ip”;
// 代理服务器(产品官网 www.16yun.cn) string proxyHost = “http://t.16yun.cn”; string proxyPort = “31111”;
// 代理验证信息 string proxyUser = “username”; string proxyPass = “password”;
// 设置代理服务器 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(); } 3、实现HTML解析,得到目标数据。获取数据需要进行清洗整理才能得到一份干净有效的数据。 4、将结果数据存储 这只是其的一些必要步骤,细分还有很多的步骤需要学习,但是我们只要掌握了整体框架,把这些都学透了那么爬虫就没有那么难了。
|