C# 使用HtmlAgilityPack抓取网页信息
前几天看到一篇博文:C# 爬虫 抓取小说
博主使用的是正则表达式获取小说的名字、目录以及内容。
下面使用HtmlAgilityPack来改写原博主的代码
在使用HtmlAgilityPack之前,可以先熟悉一下XPath:点我
代码如下:
using System;
using System.IO;
using System.Text;
using HtmlAgilityPack; namespace HtmlAgilityPackDemo
{
class Program
{
static void Main(string[] args)
{
HtmlWeb htmlWeb = new HtmlWeb();
HtmlDocument document = htmlWeb.Load("http://www.23us.so/files/article/html/13/13655/index.html");
FileStream fs = new FileStream("无疆.txt", FileMode.Append, FileAccess.Write);
StreamWriter sr = new StreamWriter(fs, Encoding.UTF8);
try
{
HtmlNodeCollection nodeCollection = document.DocumentNode.SelectNodes(@"//table/tr/td/a[@href]"); // //代表获取所有
foreach (var node in nodeCollection)
{
HtmlAttribute attribute = node.Attributes["href"];
string val = attribute.Value;
var title = htmlWeb.Load(val).DocumentNode.SelectNodes(@"//h1")[].InnerText; //文章标题
var doc = htmlWeb.Load(val).DocumentNode.SelectNodes(@"//dd[@id='contents']");//文章内容
var content = doc[].InnerHtml.Replace(" ", "").Replace("<br>", "\r\n");
sr.WriteLine("\r\n" + title + "\r\n" + content); // 开始写入
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
sr.Close();
fs.Close();
}
Console.WriteLine("ok");
Console.ReadKey(true); } }
}
代码仅供参考!!!
C# 使用HtmlAgilityPack抓取网页信息的更多相关文章
- HttpClient+Jsoup 抓取网页信息(网易贵金属为例)
废话不多说直接讲讲今天要做的事. 利用HttpClient和Jsoup技术抓取网页信息.HttpClient是支持HTTP协议的客户端编程工具包,并且它支持HTTP协议. jsoup 是一款基于 Ja ...
- .net抓取网页信息 - Jumony框架使用1
往往在实际开发中,经常会用到一些如抓取网站信息之类的的操作,往往大家采用的是用一些正则的方式获取,但是有时候正则是很死板的,我们常常试想能不能使用jquery的选择器,获取符合自己要求的元素,然后进行 ...
- Powershell抓取网页信息
一般经常使用invoke-restmethod和invoke-webrequest这两个命令来获取网页信息,如果对象格式是json或者xml会更容易 1.invoke-restmethod 我们可以用 ...
- 使用HttpWebRequest和HtmlAgilityPack抓取网页(拒绝乱码,拒绝正则表达式)
废话不多说, 直接说需求. 公司的网站需要抓取其他网站的文章,但任务没到我这,同事搞了一下午没搞出来.由于刚刚到公司, 想证明下自己,就把活揽过来了.因为以前做过,觉得应该很简单,但当我开始做的时候, ...
- 使用HtmlAgilityPack抓取网页数据
XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: nodename:选取此节点的所有 ...
- 一、使用 BeautifulSoup抓取网页信息信息
一.解析网页信息 from bs4 import BeautifulSoup with open('C:/Users/michael/Desktop/Plan-for-combating-master ...
- shell脚本抓取网页信息
利用shell脚本分析网站数据 # define url time=$(date +%F) mtime=$(date +%T) file=/abc/shell/abc/abc_$time.log ht ...
- Fiddle无法抓取网页信息或HTTPS
1:清除电脑根证书: 打开dos命令框,输入:certmgr.msc  1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 原来编写代码经常会出现数组访问 ...
- 201521123109《java程序设计》第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1. 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自 ...
- 201521123028 《Java程序设计》 第9周学习总结
1. 本周学习总结 2. 书面作业 Q1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? Ans: 在JA ...
- ArcGIS连带文字注记导出为CAD格式
可以使用ArcGIS的"Export To CAD"工具将点.线.面等要素直接导出为CAD格式.如果要连带将ArcGIS中的文字标注导出为CAD格式要稍麻烦一点,下面是一个例子. ...
- js两个叹号的使用
1.浏览器判断空和未定义以及零时返回的值如下: alert(undefined) //undefined alert(null) //null alert(0) //0 2.有时为了便于下一步判 ...
- append、extend与insert的区别
最近在自学Python语言,看到向列表增加更多数据时被append(),extend(),insert()方法绕晕了. 作为编程0基础的小白,觉得有必要自己再梳理一遍: 1.append()方法是指在 ...
- win32多线程编程
关于多线程多进程的学习,有没有好的书籍我接触的书里头关于多线程多进程部分,一是<操作系统原理>里面讲的相关概念 一个是<linux基础教程>里面讲的很简单的多线程多进程编程 ...
- 分布式系统中生成全局ID的总结与思考
世间万物,都有自己唯一的标识,比如人,每个人都有自己的指纹(白夜追凶给我科普的,同卵双胞胎DNA一样,但指纹不一样).又如中国人,每个中国人有自己的身份证.对于计算机,很多时候,也需要为每一份数据生成 ...
- ThinkPHP5高阶实战教程
tp5项目:https://www.kancloud.cn/mikkle/thinkphp5_study/396283
- Huge Mission
Huge Mission Problem Description Oaiei is busy working with his graduation design recently. If he ca ...