初次使用Winform抓取数据的一点心得
2015-07-28 11:50
543 查看
初次使用Winform抓取数据的一点心得
(一)字符串截取及正则表达式。
字符串截取主要使用的两个函数String.IndexOf()以及String.Substring(),前者主要找到需要截去的内容或者找到需要保存的内容,后者主要是截去不需要的内容。两者混合使用即可得到想要的内容。或者使用正则表达式做字符串匹配。通过webBrowser加载网页,并获取其中的HTML的元素。例如获取<div>标签:
webBrowser1.Document.GetElementsByTagName("div");这就获取到了HTML中的所有div标签元素。假设我们当前获取的一个div元素为item。那么item.InnerHtml或者 item.InnerText就获得了该div中的内容。之后我们就可以使用字符串截取或者是正则表达式匹配来获取相应的内容。
(二)webBrowser页面未加载完毕
在做数据抓取时,我们经常是抓取列表页中的内容,会涉及到切换页面的问题。有时,当我们要抓取一页的内容。但当前页面还没有加载完毕。数据内容为空时,我们该如何解决呢?
例如下面的例子
list = getAlllink();再执行。可实际情况中页面还没加载完成。List<string> list = getAlllink();已经执行。这样我们就不能得到想要的效果。这时我们就可以使用WebBrowser.DocumentCompleted。具体使用如下
(一)字符串截取及正则表达式。
字符串截取主要使用的两个函数String.IndexOf()以及String.Substring(),前者主要找到需要截去的内容或者找到需要保存的内容,后者主要是截去不需要的内容。两者混合使用即可得到想要的内容。或者使用正则表达式做字符串匹配。通过webBrowser加载网页,并获取其中的HTML的元素。例如获取<div>标签:
webBrowser1.Document.GetElementsByTagName("div");这就获取到了HTML中的所有div标签元素。假设我们当前获取的一个div元素为item。那么item.InnerHtml或者 item.InnerText就获得了该div中的内容。之后我们就可以使用字符串截取或者是正则表达式匹配来获取相应的内容。
(二)webBrowser页面未加载完毕
在做数据抓取时,我们经常是抓取列表页中的内容,会涉及到切换页面的问题。有时,当我们要抓取一页的内容。但当前页面还没有加载完毕。数据内容为空时,我们该如何解决呢?
例如下面的例子
private void getlink() { this.webBrowser1.Navigate("http://www.csdn.net/"); List<string> list = getAlllink(); } private List<string> getAlllink() { List<string> list = new List<string>(); try { foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("a")) { string link = item.GetAttribute("href"); if (link != null) { list.Add(link); } } } catch (Exception e) { } return list; }需求上要在this.webBrowser1.Navigate("http://www.csdn.net/");执行完毕之后List<string>
list = getAlllink();再执行。可实际情况中页面还没加载完成。List<string> list = getAlllink();已经执行。这样我们就不能得到想要的效果。这时我们就可以使用WebBrowser.DocumentCompleted。具体使用如下
private void getlink() { this.webBrowser1.Navigate("http://www.csdn.net/"); this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebDocCompleted); } private void WebDocCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { this.webBrowser1.DocumentCompleted -= new WebBrowserDocumentCompletedEventHandler(WebDocCompleted); List<string> list = getAlllink(); } private List<string> getAlllink() { List<string> list = new List<string>(); try { foreach (HtmlElement item in webBrowser1.Document.GetElementsByTagName("a")) { string link = item.GetAttribute("href"); if (link != null) { list.Add(link); } } } catch (Exception e) { } return list; }这样就可以达到预期效果。
相关文章推荐
- MD5算法实现细节--------第一步和第二步
- 仿微信扫描二维码
- 【转】把书《CUDA By Example an Introduction to General Purpose GPU Programming》读薄
- java类加载顺序
- ios蓝牙使用总结
- Android 调用相机或图库,裁剪图片
- Windows下安装tomcat
- GTK常用控件之图片控件( GtkImage )
- Codeforces Round #312 (Div. 2) C
- DIV+CSS网页设计常用布局代码
- ZH奶酪:哈工大LTP云平台标记含义及性能
- 常用css样式处理
- 最小栈的实现与优化
- xhEditor使用方法1
- button with a big font
- iOS——转场动画(CATransition)
- HTML Meta 详解
- 高校学生考勤系统需求分析
- 一步步优化JVM<五>:优化延迟或者响应时间(2)
- VS2010中编译openssl的步骤和使用设置