[爬虫]通过url获取连接地址中的数据
1. 要想获取指定连接的数据,那么就得使用HtmlDocument对象,要想使用HtmlDocument对象就必需引用using
HtmlAgilityPack;
2. 详细步骤如下:
步骤一:
获取链接地址内容:
var html =HttpDownLoadHelper.GetUtf8Html("链接地址");
HttpDownLoadHelper类中的内容如下:
public
class
HttpDownLoadHelper
{
///
<summary>
///
根据URL获取一个页面的Html内容
///
</summary>
///
<param name="url"></param>
///
<returns></returns>
public
static
string
GetUtf8Html(string
url)
{
WebClient
wc
=
new
WebClient();
wc.Encoding
=
Encoding.UTF8;
var
html
=
wc.DownloadString(url);
return
html;
}
}
步骤二:
判断获取到的内容是否为空?
步骤三:
获取数据:
·实例化"HtmlDocument
【HTML文档】"对象
HtmlDocument
doc
=
new
HtmlDocument();
·载入获取到的内容
doc.LoadHtml(html);
·获取文档中的根节点
HtmlNode
rootNode
=
doc.DocumentNode;
·从根节点中通过标签获取指定的内容。
HtmlNodeCollection
titleNodes
=
rootNode.SelectNodes("对应的标签");
存储数据:
·创建一个存放数据的List集合
List<NewsList>
newsList=new
List<NewsList>();
NewsList对象的代码如下:
public
class
NewsList
{
public
string
Title { get; set; }
public
string
Url { get; set; }
}
·将数据添加到集合中:
foreach (var
title
in
titleNodes)
{
NewsList
news=new
NewsList();
news.Title
=
title.GetAttributeValue("title", "");
// title是标签的属性
news.Url="http://www.yulinu.edu.cn"+title.GetAttributeValue("href", "");
//href是标签的属性。
newsList.Add(news);
}
具体事例:【获取榆林学院首页中的新闻列表】
HtmlAgilityPack.dll的下载地址:http://htmlagilitypack.codeplex.com/【里面有支持各种.NET Framework的版本的dll。】
·主方法:
public
static
void
Main(string[] args)
{
//创建一个存放新闻的List集合
List<NewsList>
newsList=new
List<NewsList>();
//根据url获取一个页面的Html内容。
var
html
=
HttpDownLoadHelper.GetUtf8Html("http://www.yulinu.edu.cn/news.jsp?urltype=tree.TreeTempUrl&wbtreeid=1036");
//判断是否为空
if (!string.IsNullOrEmpty(html))
{
HtmlDocument
doc
=
new
HtmlDocument(); //实例化html实例对象
doc.LoadHtml(html);//载入html文档
HtmlNode
rootNode
=
doc.DocumentNode; //获取文档中的根节点
//从根节点中通过标签获取指定的内容。
HtmlNodeCollection
titleNodes
=
rootNode.SelectNodes("//div[@class='Classbox List']/ul/li/a");
foreach (var
title
in
titleNodes)
{
NewsList
news=new
NewsList();
news.Title
=
title.GetAttributeValue("title", "");
news.Url
=
"http://www.yulinu.edu.cn"
+
title.GetAttributeValue("href", "");
newsList.Add(news);
}
}
//输出标题和地址
foreach (var
list
in
newsList)
{
Console.WriteLine("新闻标题为:{0},新闻链接地址为:{1}",list.Title,list.Url);
}
Console.WriteLine("总共有{0}条新闻",newsList.Count);
Console.ReadKey();
}
·HttpDownLoadHelper代码如下:
public
class
HttpDownLoadHelper
{
///
<summary>
///
根据URL获取一个页面的Html内容
///
</summary>
///
<param name="url"></param>
///
<returns></returns>
public
static
string
GetUtf8Html(string
url)
{
WebClient
wc
=
new
WebClient();
wc.Encoding
=
Encoding.UTF8;
var
html
=
wc.DownloadString(url);
return
html;
}
}
·NewsList代码如下:
public
class
NewsList
{
public
string
Title { get; set; }
public
string
Url { get; set; }
}
[爬虫]通过url获取连接地址中的数据的更多相关文章
- 获取给定地址中的域名,substring()截取
package seday01;/** * 获取给定地址中的域名 * @author xingsir */public class Test { public static void main(Str ...
- 项目中通过Sorlj获取索引库中的数据
在开发项目中通过使用Solr所提供的Solrj(java客户端)获取索引库中的数据,这才是真正对项目起实质性作用的功能,提升平台的检索性能及检索结果的精确性 第一步,引入相关依赖的jar包 第二步,根 ...
- asp.net网页上获取其中表格中的数据(爬数据)
下面的方法获取页面中表格数据,每个页面不相同,获取的方式(主要是正则表达式)不一样,只是提供方法参考.大神勿喷,刚使用了,就记下来了. 其中数据怎么存,主要就看着怎么使用了.只是方便记录就都放在lis ...
- vue父组件中获取子组件中的数据
<FormItem label="上传头像" prop="image"> <uploadImg :width="150" ...
- Mysql字符串截取_获取指定字符串中的数据
前言:本人遇到一个需求,需要在MySql的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('www.sql ...
- win10连接无线网,开启移动热点,手机连接它手机一直显示获取ip地址中。
*必须要有无线网卡才能设置WIFI首先打开电脑,选中“计算机”或者“我的电脑”,右击进入“管理”选项“.打开“计算机管理”窗口之后,在左栏菜单选项中找到“服务和应用程序”下的“服务”选项,如图点击进入 ...
- 如何获取 C# 类中发生数据变化的属性信息
一.前言 在平时的开发中,当用户修改数据时,一直没有很好的办法来记录具体修改了那些信息,只能暂时采用将类序列化成 json 字符串,然后全塞入到日志中的方式,此时如果我们想要知道用户具体改变了哪几个字 ...
- C# 如何获取SQL Server 中指定数据表的所有字段名和字段类型
如何获取指定数据表的所有字段名和字段类型.SqlConnection.GetSchema方法有2个重载形式,获取指定数据表的所有字段名和字段类型的秘密就在GetSchema (String, Stri ...
- c# 通过URl 获取返回的json格式数据
方法一 http://blog.csdn.net/angle_greensky110/article/details/52209497 protected string GetJson(string ...
随机推荐
- NAND Flash中常用的纠错方式(ECC算法)
Hanming,RS,BCH —— NAND Flash中常用的纠错方式 因为闪存中会有出错的可能,如果没有使用ECC模块,读出的数据和写入的数据会有不匹配的可能,也许一个文件中只有一两个bit不匹配 ...
- java selenium webdriver实战 应用小结
部分api 1.访问网站 driver.get("http://www.baidu.com"); 或者 driver.navigate().to("http://www. ...
- hdu 2563 统计问题
统计问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- CSS文字样式
font-family:通常文章的正文使用的是易读性较强的serif字体,用户长时间阅读下不easy疲劳.而标题和表格则採用较醒目的sans-serif字体.Web设计及浏览器设置中也推荐遵循此原则. ...
- 2.Freshman阶段学习内容的确定
我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...
- Matlab中的静态(持久)变量和全局变量
1.静态变量(persistent) 在函数中声明的变量,当函数调用完之后就会释放.如果想保留这个变量的值(供该函数下一次调用),可以把这个变量声明为静态变量.静态变量不能在声明的时候赋值,而且只能在 ...
- STL: generate ,geterate_n
在随机生成一定范围不重复数时用到random_shuffle函数,之前填充数组都是用for循环, 想到之前python中的range生成序列,于是在C++中找到对应的generate用来生成所需数组. ...
- iOS 图标、图形尺寸? iPhone、iPad、 iPod touch
链接地址:http://www.zhihu.com/question/20248971 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:刘剑链接:http://www.zhi ...
- android五种布局模式
Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:LinearLayout (线性布局),FrameLayout(框架布局),AbsoluteLayout(绝对 ...
- C winpcap 网络抓包 并获取IP TCP 协议的相关信息
以太网协议分析函数: void ethernet_protocol_packet_handle (u_char *argument, const struct pcap_pkthdr *packet_ ...