上课第四天,学到正则表达式这部份,虽然只说半天的正则,老师说的也对,用到的时候再把这部份的内容专门看下,虽然没说太多这方面的东西,不过觉得有个课堂上的小练习倒是挺有趣,把招聘网站的职位信息抓取出来,不过只是显示出职位信息,觉得这样练得不太爽,还可以把再多一点的相关信息也显示出来,所以现把这功能扩展了下,显示出网站上的职位、公司、地区、日期都显示出来并且生成一个HTML页面以表格的形式来展示出获取到的职位信息。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Collections;
- using System.Net;
- using System.Text.RegularExpressions;
- using System.IO;
- namespace hm1
- {
- class Program
- {
- static void Main(string[] args)
- {
- // 抓取信息,生成以表格形式的的职位公司地址和日期的HTML页面
- WebClient wb = new WebClient();
- // 获取页面源码
- string s = wb.DownloadString(@"http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=010000%2C00&funtype=0000&industrytype=00&keyword=net%E5%BC%80%E5%8F%91%E5%B7%A5%E7%A8%8B%E5%B8%88&keywordtype=2&lang=c&stype=1&postchannel=0000&fromType=23");
- // 正则,获取招聘相关信息
- Regex regall = new Regex(@"<td class=""td1""><a href="".+"" onclick=""zzSearch.acStatRecJob\( 1 \);"" class=""jobname"" target=""_blank"" >(?<zhiwei>.+)</a><img src="".+"" align=""absmiddle"" onclick=""zzSearch.switchListType\( this , '#[\w]{6}' \);""></td>\s+<td class=""td2""><a href="".+"" class=""coname"" target=""_blank"" >(?<gs>.+)</a></td>\s+<td class=""td3""><span id="".+"">(?<address>[\w\-]+)</span></td>\s+<td class=""td4""><span id="".+"">(?<datename>\d{4}\-\d{2}\-\d{2})</span></td>\s+<td class=""td5""> </td>");
- List<zhaoping> ls = new List<zhaoping>();
- MatchCollection m = regall.Matches(s);
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < m.Count; i++)
- {
- zhaoping z = new zhaoping(); // 获取每一条招聘信息
- z.zihwei = m[i].Groups["zhiwei"].Value.Replace(@"<font color=""#fe0201"">", "").Replace(@"</font>", "");
- z.gongshi = m[i].Groups["gs"].Value;
- z.dizhi = m[i].Groups["address"].Value;
- z.riqi = m[i].Groups["datename"].Value;
- ls.Add(z);
- Console.WriteLine("职位:{0} 公司:{1} 地址:{2} 日期:{3}", z.zihwei, z.gongshi, z.dizhi, z.riqi);
- }
- // 生成HTML源码
- sb.AppendLine("<html><head><title>招聘信息</title></head><body><table><tr align ='left' ><th>职位</th><th>公司</th><th>地址</th><th>日期</th></tr>");
- foreach (var item in ls)
- {
- sb.AppendLine(item.getline());
- }
- sb.AppendLine("</table></body></html>");
- // 输出文件
- System.IO.File.WriteAllText("招聘.html", sb.ToString(), Encoding.UTF8);
- Console.ReadKey();
- }
- }
- class zhaoping
- {
- public string zihwei { get; set; } // 职位
- public string gongshi { get; set; }// 公司
- public string dizhi { get; set; }// 地址
- public string riqi { get; set; }// 日期
- public string getline()
- {
- return string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td></tr>", zihwei, gongshi, dizhi, riqi);
- }
- }
- }
复制代码
运行之后会在程序启动目录下生成一个招聘.html的文件,里面是.NET相关的开发职位(如图)
网站页面
yyyyyyyyyyyy.png
(130.83 KB, 下载次数: 0)
抓取后生成的页面
应用中心截屏_2014-04-26T13-17-56.788Z.png
(227.5 KB, 下载次数: 0)
|
|