使用HtmlAgilityPack批量抓取网页数据

原文:使用HtmlAgilityPack批量抓取网页数据

相关软件点击下载

登录的处理。因为有些网页数据需要登陆后才能提取。这里要使用ieHTTPHeaders来提取登录时的提交信息。

抓取网页

 HtmlAgilityPack.HtmlDocument htmlDoc;

            if (!string.IsNullOrEmpty(登录URL))
            {
                htmlDoc = htmlWeb.Load(登录URL, 提交的用户验证信息, 获取数据的网页URL);
            }
            else
            {
                htmlDoc = htmlWeb.Load(获取数据的网页URL);
            }
        

 

 

 ArrayList list = new ArrayList();
            list.add("//table/tr[1]/td");
            list.add("//table/tr[2]/td");
            //获取循环的节点的xpath,比如://table/tr
            HtmlNodeCollection repeatNodes = htmlDoc.DocumentNode.SelectNodes("//table/tr");

            //循环节点
            foreach (HtmlNode node in repeatNodes)
            {
                //循环获取数据
                foreach (string dataPath in list)
                {

                    HtmlNode dataNode = node.SelectSingleNode(list);
                    if (dataNode != null)
                    {
                        string text = dataNode.InnerText;
                    }

                }
            }

如果出现乱码,调整编码集为gb2312或者是utf-8

htmlWeb.DefaultEncoding = System.Text.Encoding.GetEncoding(strEncode);

-------------------------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Text;

using Microsoft.VisualStudio.TestTools.WebTesting;

using HtmlAgilityPack;

public class WebTest1Coded : WebTest

{

public override IEnumerator<WebTestRequest> GetRequestEnumerator()

{

WebTestRequest request1 = new WebTestRequest("http://www.microsoft.com/");

request1.ValidateResponse += new EventHandler<ValidationEventArgs>(request1_ValidateResponse);

yield return request1;

}

void request1_ValidateResponse(object sender, ValidationEventArgs e)

{

//load the response body string as an HtmlAgilityPack.HtmlDocument

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

doc.LoadHtml(e.Response.BodyString);

//locate the "Nav" element

HtmlNode navNode = doc.GetElementbyId("Nav");

//pick the first <li> element

HtmlNode firstNavItemNode = navNode.SelectSingleNode(".//li");

//validate the first list item in the Nav element says "Windows"

e.IsValid = firstNavItemNode.InnerText == "Windows";

}

}

时间: 2024-09-22 21:47:46

使用HtmlAgilityPack批量抓取网页数据的相关文章

javascript-如何利用js或者jQuery抓取网页数据

问题描述 如何利用js或者jQuery抓取网页数据 有什么高效的方法吗,或者怎么实现,主要问题在于,怎么获取frame里的元素 解决方案 这个是服务器端弄的,客户端js受限于浏览器安全,无法直接获取跨域数据. 一定js可以用雅虎的yql将远程html下载转为jsonp数据,或者自己服务器做代理页面 解决方案二: bobo说的很对,要高效,建议你在服务器上抓取,或者干脆用io.js一类的将js作为本地应用的运行时.

c++builder-C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者。。多谢了

问题描述 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..多谢了 C++builder实现抓取网页数据,保存在本地文件,希望能给个简单的demo,我是初学者..工作中用到了,各位大牛,兄弟很急,在这里先多谢了!! 解决方案 用idhttp控件很方便的

抓取数据-用jsoup抓取网页数据的时候,在本地开发环境上面没有问题,但是把他部署到阿里云上面就不行

问题描述 用jsoup抓取网页数据的时候,在本地开发环境上面没有问题,但是把他部署到阿里云上面就不行 用jsoup抓取网页数据的时候,在本地开发环境上面没有问题, 但是把他部署到阿里云上面去的时候,就连接超时.但奇怪的是,我对4,5个网址进行抓取, 就一个网址连接超时,高手帮忙解决下 解决方案 有没有人在 有没有人在 有没有人在

c语言抓取网页数据的问题

问题描述 c语言抓取网页数据的问题 现有一固定网址,我需要从该网址上获取数据并拆分.希望大神能帮我实现,本人并无此类经验,请务必写出完整代码,多谢多谢 解决方案 (C语言)ACM中的数据处理问题!C语言数据转换问题C语言一维数据中2[arry]问题 解决方案二: (C语言)ACM中的数据处理问题! C语言数据转换问题 C语言一维数据中2[arry]问题 解决方案三: http://blog.chinaunix.net/uid-9950859-id-98922.htmlhttp://bbs.csd

java抓取网页数据数据问题

问题描述 java抓取网页数据数据问题 !红线的位置有错误图片说明 解决方案 写的没见过--给你我常写的把. HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); HttpGet httpGet = new HttpGet(url); 解决方案二: org.apache.http.i

求助! 使用java抓取网页数据

问题描述 我想要抓取这个https://www.bicing.cat/es/formmap网上的有关自行车的信息改怎么样抓取??求指教! 解决方案 解决方案二:请求这个网址,然后把获取到的InputStream读出来,看看有没有你要的数据.newInputStreamReader(((HttpURLConnection)(newURL("https://www.bicing.cat/es/formmap")).openConnection()).getInputStream()); 解

HttpWebRequest 抓取网页数据问题!!!

问题描述 各位高手:我使用HttpWebRequest类来抓取http://kr.mouser.com网页的数据,我选择的是韩语的页面,可是抓下来的数据是中文的,哪位高手给个解决方案.万分感激!附上代码HttpWebRequestwebRequest=(HttpWebRequest)WebRequest.Create("http://kr.mouser.com");webRequest.Method="GET";webRequest.Headers.Set(&quo

php结合正则批量抓取网页中邮箱地址

  php如何抓取网页中邮箱地址,下面我就给大家分享一个用php抓取网页中电子邮箱的实例. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $url='http://www.3lian.net'; //要采集的网址 $content=file_get_contents($url); //echo $content; function getEmail($str) { //$pattern = "/([a-z0-9]*[-_.]?[a-z0-9]+)*@([a-z

请教如何批量抓取bbs数据?

问题描述 请问抓取bbs数据都有什么方法?希望能够抓取10天内所有的帖子 解决方案 解决方案二:火车头~解决方案三:htmlparser+httpclient可以解决你的问题.解决方案四:可以通过rss,订阅方式,解析xml得到解决方案五:该回复于2011-03-17 14:34:28被版主删除解决方案六:RSS