python爬虫获取天气网实时数据

376 阅读2分钟

关注天气预报的小伙伴估计这两天都在等着断崖式降温的到来,据天气预报数据冷空气即将到达很多地区的降温会超过10度,有些地方的最低温会达到0度左右,这时会有一夜入冬的感觉,人必须做好人体的防寒工作,不但要尽早添加衣物,还要准备好防寒的帽子手套和加绒的鞋子。在冷空气到达的时候,一定要全副武装,穿好这些保暖衣物,佩戴帽子和手套,不然在外出的时候容易受寒,会让自己因冷空气到达而出现感冒影响身体健康。
刚好最近学会了爬虫,让我们自制一个天气预报的爬虫吧。简单的需求分析如下:
1、用 requests 爬取 全国天气网的网页源代码, 2、解析网页源代码,取得天气情况信息的节点。 3、将获取的数据将信息保存到本地 Excel 文件。
实现过程通过爬虫程序+爬虫代理进行大数据采集,其中爬虫脚本使用Python常用的requests+BeautifulSoup+selenium完成 ,代理选择的是亿牛云代理提供的隧道代理。在爬虫程序里面添加代理IP实现数据获取的过程如下:

Plain Text

复制代码

// 要访问的目标页面

string targetUrl = "httpbin.org/ip";

// 代理服务器(产品官网 www.16yun.cn)

string proxyHost = "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();