Winista.Text.HtmlParser; 获取html
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
using Winista.Text.HtmlParser;
using Winista.Text.HtmlParser.Lex;
using Winista.Text.HtmlParser.Util;
using Winista.Text.HtmlParser.Tags;
using Winista.Text.HtmlParser.Filters;
namespace Leo.GetOrganzation
{
public partial class FormLeo : Form
{
IList<string> siteList = new List<string>();
public FormLeo()
{
InitializeComponent();
this.InitSet();
}
private void InitSet()
{
this.comboBoxArea.SelectedIndex = 0;
}
private void comboBoxArea_SelectedIndexChanged(object sender, EventArgs e)
{
string strUrl = string.Empty;
switch (this.comboBoxArea.SelectedIndex)
{
case 0:
strUrl = string.Empty;
break;
case 1:
strUrl = "http://www.alexa.com/topsites/global;{0}";
break;
case 2:
strUrl = "http://www.alexa.com/topsites/countries;{0}/CN";
break;
case 3:
strUrl = "http://www.alexa.com/topsites/countries;{0}/HK";
break;
case 4:
strUrl = "http://www.alexa.com/topsites/countries;{0}/MO";
break;
case 5:
strUrl = "http://www.alexa.com/topsites/countries;{0}/TW";
break;
}
this.txtUrlText.Text = strUrl;
this.textBox1.Text = "";
this.textBox2.Text = "";
this.textBox3.Text = "";
}
private void btnGetRes_Click(object sender, EventArgs e)
{
siteList = new List<string>();
if (this.comboBoxArea.SelectedIndex == 0)
{
MessageBox.Show("请选择区域");
return;
}
for (int i = 0; i < int.Parse(this.textBox3.Text.Trim()); i++)
{
string urlLink = string.Format(this.txtUrlText.Text.Trim(),i);
string temp = this.GetRes(urlLink);
this.GetSiteName(temp);
System.Threading.Thread.Sleep(1000);
Application.DoEvents();
}
////string temp = this.GetRes("http://www.alexa.com/topsites/countries;19/TW");
////this.GetSiteName(temp);
MessageBox.Show("获取完毕,待导出");
}
private void GetSiteName(string strhtml)
{
Parser parser = Parser.CreateParser(strhtml, null);
NodeList nodes = parser.ExtractAllNodesThatMatch(new TagNameFilter("h2"));
for (int i = 0; i < nodes.Count; i++)
{
siteList.Add(nodes[i].Children[1].ToPlainTextString());
}
}
private string GetRes(string Url)
{
string strResult = string.Empty;
try
{
HttpWebRequest request =(HttpWebRequest)WebRequest.Create(Url);
request.Timeout = 30000;
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response =(HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("utf-8");
StreamReader streamReader =new StreamReader(streamReceive, encoding);
strResult = streamReader.ReadToEnd();
}
catch(Exception) {}
return strResult;
}
private void WriteTxt()
{
string sucessFile = Application.StartupPath;
string selectText = this.comboBoxArea.SelectedItem.ToString();
if (File.Exists(string.Format("{0}\\{1}.txt", sucessFile, selectText)))
{
File.Delete(string.Format("{0}\\{1}.txt", sucessFile, selectText));
}
StreamWriter sw = new StreamWriter(string.Format("{0}\\{1}.txt", sucessFile, selectText),true);
try
{
foreach (string item in siteList)
{
sw.WriteLine(item+" "+selectText);
}
sw.Dispose();
sw.Close();
MessageBox.Show("导出OK");
}
catch (Exception)
{
}
}
private void button1_Click(object sender, EventArgs e)
{
if (this.comboBoxArea.SelectedIndex == 0)
{
MessageBox.Show("请选择区域");
return;
}
if (siteList.Count == 0)
{
MessageBox.Show("没有数据");
return;
}
WriteTxt();
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
int countPage = int.Parse(this.textBox3.Text.Trim());
this.textBox1.Text = string.Format(this.txtUrlText.Text.Trim(), 0);
this.textBox2.Text = string.Format(this.txtUrlText.Text.Trim(), countPage - 1);
}
}
}
Winista.Text.HtmlParser; 获取html的更多相关文章
- HTMLParser获取属性名
HTMLParser获取属性名方式: 原始网页文本: <a title="美军被曝虐尸" href="http://www.sogou.com/web?query= ...
- jquery中html()或text()方法获取或设置p标签的值
html()方法可以用来读取或者设置某个元素中的HTML内容,text()方法可以用来读取或者没置某个元素中的文本内容 html()方法 此方法类似于JavaScript中的innerHTML属性,可 ...
- select获取选中的option(包含value和text,重点是text怎么获取)
简单描述:后台需要获取到select标签选择的内容,也就是text,该怎么取呢?很简单. 代码: //hml代码<div class="col-md-6"> <l ...
- js 通过html()及text()方法获取并设置p标签的显示值
html()方法 此方法类似于JavaScript中的innerHTML属性,可以用来读取或者设置某个元素中的HTML内容.要获取某个元素的内容,可以这样: 复制代码 代码如下: var p_html ...
- 大数据处理之道 (htmlparser获取数据<一>)
一:简单介绍 (1)HTML Parser是一个用于解析Html的Java的库.可採用线性或嵌套两种方式.主要用于网页的转换或提取,他有一些特性:过滤器filter,遍历器visitors,通常的标签 ...
- Text 尺寸获取
获取text在当前文本内容下应该尺寸: 宽度:text.preferredWidth 高度:text.preferredHeight
- XPath匹配标签使用text()判断获取结果失败/为空的问题及解决方法
XPath当匹配标签判断text()判断内容失败的问题及解决 问题复现 在爬取网站的时候我使用XPath去抓取网页上的内容,XPath表达式来精准获取需要的标签内容. 当我对如下一段html代码编写X ...
- sublime text 插件 -- 获取文件名到剪贴板
日常开发使用 sublime text 有好长一段时间了,有时候想拷贝当前正在编辑的文件名时发现没有很快捷的方法,一般都是先点击右键菜单栏中的 Reveal in Side Bar 对文件进行定位(在 ...
- HTMLPARSER.NET 参考资料
例子1: using System;using System.IO;using Winista.Text.HtmlParser;using Winista.Text.HtmlParser.Lex;us ...
随机推荐
- python子类分配
原问题是将左边样式变成右边样式: 即有父类和子类,父类包括多个子类,怎样将子类匹配到父类下面的问题 代码如下 #!/usr/bin/python3.4 # -*- coding: utf-8 -*- ...
- typeof和instanceof运算符
(1)typeof运算符用于判断某一个变量的数据类型,它可以作为函数来用,如typeof(a)可以返回变量a的数据类型:也可以作为一个运算符来使用,例如typeof a 也可以返回变量a的数据类型,不 ...
- C# ASP.NET基类,常用类库及源代码
http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm
- asp.net中virtual和abstract的区别分析
这篇文章主要介绍了asp.net中virtual和abstract的区别,较为详细的分析了virtual与abstract的概念与具体用法,并以实例的形式予以总结归纳,需要的朋友可以参考下 本文实例分 ...
- android模拟器不能用键盘
android模拟器不能用键盘?咋整啊?
- 转(linux shell)
请把如下字符串 stu494 e222f stu495 bedf3 stu496 92236 stu497 49b91 转为如下形式: stu494=e222f stu495=bedf3 stu496 ...
- js/jquery 操作document对象
一.获取对象 //js获取的是dom对象,jquery获取的是jquery对象 //jquery对象可以输出dom对象,索引方式输出dom对象,eq()[]方式输出dom对象;eq()输出jquery ...
- thinkphp在为图片添加png水印不足的处理
thinkphp在为图片加水印的时候.如果水印图片是png图片,透明度处理很不理想,与是做以下处理 在Image.class.php中新增 static function imagecopymerge ...
- 利用MyEclipse自动创建PO类、hbm文件(映射文件)、DAO
原文地址:http://blog.csdn.net/fangzhibin4712/article/details/7179414 前提条件:表sjzdfl 表sjzdxx (使用数据库MySQL) ...
- 通过共享用户ID来实现多个应用程序使用同一个进程(一些情况的测试)
从很多方面来看,每个Android 应用程序都存在于它自己的世界之中:• 默认情况下,每个应用程序均运行于它自己的Linux 进程中.当应用程序中的任意代码开始执行时,Android 启动一个进程,而 ...