云翔在线聊天室提供在线聊天室,WebIM,网盘等服务,WebIM可以免费建群(不限人数),聊天记录在线存储。
之前做聊天室时,由于在聊天室中提供了新闻阅读的功能,写了一个从网页中抓取信息(如最新的头条新闻,新闻的来源,标题,内容等)的类,本文将介绍如何使用这个类来抓取网页中需要的信息。本文将以抓取博客园首页的博客标题和链接为例:
上图显示的是博客园首页的DOM树,显然只需提取出class为post_item的div,再重中提取出class为titlelnk的a标志即可。这样的功能可以通过以下函数来实现:
/// <summary>
/// 在文本html的文本查找标志名为tagName,并且属性attrName的值为attrValue的所有标志
/// 例如:FindTagByAttr(html, "div", "class", "demo")
/// 返回所有class为demo的div标志
/// </summary>
public static List<HtmlTag> FindTagByAttr(String html, String tagName, String attrName, String attrValue)
{
String format = String.Format(@"<{0}\s[^<>]*{1}\s*=\s*(\x27|\x22){2}(\x27|\x22)[^<>]*>", tagName, attrName, attrValue);
return FindTag(html, tagName, format);
}
public static List<HtmlTag> FindTag(String html, String name, String format)
{
Regex reg = new Regex(format, RegexOptions.IgnoreCase);
Regex tagReg = new Regex(String.Format(@"<(\/|)({0})(\s[^<>]*|)>", name), RegexOptions.IgnoreCase);
List<HtmlTag> tags = new List<HtmlTag>();
int start = 0;
while (true)
{
Match match = reg.Match(html, start);
if (match.Success)
{
start = match.Index + match.Length;
Match tagMatch = null;
int beginTagCount = 1;
while (true)
{
tagMatch = tagReg.Match(html, start);
if (!tagMatch.Success)
{
tagMatch = null;
break;
}
start = tagMatch.Index + tagMatch.Length;
if (tagMatch.Groups[1].Value == "/") beginTagCount--;
else beginTagCount++;
if (beginTagCount == 0) break;
}
if (tagMatch != null)
{
HtmlTag tag = new HtmlTag(name, match.Value, html.Substring(match.Index + match.Length, tagMatch.Index - match.Index - match.Length));
tags.Add(tag);
}
else
{
break;
}
}
else
{
break;
}
}
return tags;
}
有了以上函数,就可以提取需要的HTML标志了,要实现抓取,还需要一个下载网页的函数:
public static String GetHtml(string url)
{
try
{
HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
req.Timeout = 30 * 1000;
HttpWebResponse response = req.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
MemoryStream buffer = new MemoryStream();
Byte[] temp = new Byte[4096];
int count = 0;
while ((count = stream.Read(temp, 0, 4096)) > 0)
{
buffer.Write(temp, 0, count);
}
return Encoding.GetEncoding(response.CharacterSet).GetString(buffer.GetBuffer());
}
catch
{
return String.Empty;
}
}
以下以抓取博客园首页的文章标题和链接为例,介绍如何使用HtmlTag类来抓取网页信息:
class Program
{
static void Main(string[] args)
{
String html = HtmlTag.GetHtml("http://www.cnblogs.com");
List<HtmlTag> tags = HtmlTag.FindTagByAttr(html, "div", "id", "post_list");
if (tags.Count > 0)
{
List<HtmlTag> item_tags = tags[0].FindTagByAttr("div", "class", "post_item");
foreach (HtmlTag item_tag in item_tags)
{
List<HtmlTag> a_tags = item_tag.FindTagByAttr("a", "class", "titlelnk");
if (a_tags.Count > 0)
{
Console.WriteLine("标题:{0}", a_tags[0].InnerHTML);
Console.WriteLine("链接:{0}", a_tags[0].GetAttribute("href"));
Console.WriteLine("");
}
}
}
}
}
运行结果如下:
源代码下载
相关推荐
**Python网页信息抓取技术详解** 网页信息抓取,也称为网络爬虫或网页抓取,是通过自动化程序从互联网上获取大量数据的过程。在这个领域,Python语言因其强大的库支持和简洁的语法而成为首选工具。本教程将深入探讨...
【大苹果网页信息抓取系统】是一个由林强开发的专为64位操作系统设计的信息采集工具,其核心目标是高效、精准地从互联网上抓取并处理网页数据。在这个系统中,用户可以定制化地设定抓取规则,以便从各种网站上提取所...
【网页信息抓取工具HTTPLook详解】 在互联网大数据时代,获取网页信息是许多开发者、研究人员和数据分析者的重要任务。HTTPLook是一款便捷高效的网页信息抓取工具,它简化了网页数据提取的过程,使得非编程背景的...
在IT领域,尤其是在编程实践中,"C# 多线程网页信息抓取"是一个重要的主题。这个主题涉及到网络编程、多线程技术和信息提取技术,是构建高效爬虫程序的关键。下面将详细解释这些知识点: 1. **C#语言基础**:C#是一...
本程序编写了一个从网页中抓取信息(如最新的头条新闻,新闻的来源,标题,内容等)的类,而且本程序文件夹中含有word文件,文件将介绍如何使用这个类来抓取网页中需要的信息。文件将以抓取博客园首页的博客标题和...
网页抓取,也称为网络爬虫或网页抓取,是一种技术,用于自动化地从互联网上获取大量信息。jsoup特别适用于小型到中等规模的网页抓取任务,它能够高效地解析HTML,从而提取出我们需要的数据,如新闻标题、内容、作者...
网页信息抓取是一种常见的数据获取技术,特别是在互联网大数据分析、网站维护、搜索引擎优化等领域中有着广泛应用。本教程将介绍如何通过编程方式抓取网页信息,提取种子地址,并下载相关图片。 首先,我们需要了解...
读取super.21cn.com手机竞价信息的小程序,带了accsee数据表作统计,不过大家可以发现最后竞价获得商品的价格的秘密,可以知道商家利用所谓的网络竞价的赚钱的手段。由于没有使用相对路径,请将程序放于D盘根目录下...
通过以上步骤,我们可以构建一个基本的STM32和WiFi模块相结合的网页信息抓取系统,为物联网、智能家居、工业监控等领域提供数据获取的可能性。然而,实际应用中可能还需要考虑到安全性、网络连接稳定性、数据加密等...
值得注意的是,虽然此工具提供了一种便利的方式获取网页信息,但使用时必须遵守版权法规,尊重原创者的权益。对于受版权保护的内容,未经许可的抓取和复制可能会引发法律问题。因此,在使用网页文字抓取器1.3时,...
本文实例讲述了Python爬虫实现网页信息抓取功能。分享给大家供大家参考,具体如下: 首先实现关于网页解析、读取等操作我们要用到以下几个模块 import urllib import urllib2 import re 我们可以尝试一下用...
网页文字抓取器是一种工具,主要用于从互联网上的网页中批量提取文字内容。这种工具在数据挖掘、信息分析、搜索引擎优化(SEO)等领域有着广泛的应用。它能够自动化地爬取网页,解析HTML,提取出纯文本,帮助用户...
网页图片抓取工具,通常指的是能够自动从网页中批量下载图片的应用程序,这些工具极大地简化了用户收集网络图片的过程。GetWebPic作为一个典型的网页图片抓取工具,它可以帮助用户高效地从目标网站获取所需的图片...
同时,对于有经验的开发者,这个示例也可以作为一个快速实现网页信息抓取的基础框架,根据实际需求进行定制和扩展。总的来说,VB.NET结合.NET框架提供了强大而灵活的工具,使得网页爬取变得更加简单和高效。
这款工具是用C#编程语言编写的,旨在简化和优化网页信息提取的过程,帮助开发者高效地进行网页数据挖掘工作。 在网页抓取过程中,HTML抓取是最基础的步骤。HTML(HyperText Markup Language)是构成网页的主要标记...
【标题】提到的"网页爬虫工具能够抓取网页信息的软件",正是指的这类工具在IT领域的应用。 PClawer V1.1是一款绿色版的网页爬虫工具,它具备高度定制化的功能,适用于对网页数据有特定需求的高级用户。【描述】中...
2. **HTML解析**:HTML是构成网页的基础语言,抓取工具需要解析HTML文档以提取所需信息。这涉及到DOM(文档对象模型)的理解,DOM将HTML或XML文档转换为一个树形结构,便于程序操作。 3. **CSS选择器**:CSS选择器...
网页数据抓取引擎是一种强大的工具,它允许用户根据自己的需求定制数据提取规则,从而能够从互联网上的各种网页中高效地获取所需信息。这种技术在数据分析、市场研究、内容聚合、竞争情报等领域广泛应用。 首先,...