[爬虫]通过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);

}

?

具体事例:【获取榆林学院首页中的新闻列表】

·引用using
HtmlAgilityPack;

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获取连接地址中的数据

时间: 2024-10-06 13:20:46

[爬虫]通过url获取连接地址中的数据的相关文章

怎么样从地址中获得数据?

首先来看看需求,如果我们开发facebook上social game,需要调用它的接口来获得用户在facebook上的好友信息.这个时候我们就要访问facebook提供的一个地址呢,当然你在访问他的时候,他需要对你的访问做验证,防止非法请求.这个时候就得向其post|get一些参数. 如下面的地址: $url_with_get= "http://api.facebook.com/restserver.php?method=facebook.friends.get&session_key=

CAD.NET中获取命名字典中的数据方法

语句如下: dicts.GetAt(Position).GetXrecord("年薪").First().Value 其中 DBDictionary dicts=(DBDictionary)trans.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForRead); trans: using (Transaction trans=db.TransactionManager.StartTransaction()) CAD.NET中获取命名

Android---35---openFileInput、openFileOutput获取手机内存中的数据

openFileOutput和openFileInput 获取手机内存中的文件而不是SD卡中的. Context提供了两个方法来打开本应用程序的数据文件夹里的文件I/O流. openFIleInput(String name):name文件对应的输入流 openFileOutput(String name,int mode):name文件对应的输出流 其中输出流中的第二个参数表示打开文件的模式,也可以称作权限: MODE_PRIVATE:该文件只能被当前程序读写 MODE_APPEND:以追加的

vue父组件中获取子组件中的数据

<FormItem label="上传头像" prop="image"> <uploadImg :width="150" :height="150" :name="'avatar'" size="150px*150px" ref="avatar"></uploadImg> </FormItem> <FormItem

将数据保存在web.config配置文件中,及如何获取config配置文件中的数据

<1> 有的数据需要写到配置文件中的.我们就尽量写到配置文件中来.比如经常变动的数据 ,或者用户时候的时候只要改改配置文件就可以了用了的值,如:ip地址.端口号,MD5加盐.等等.我们可以将这些值写入到web.config文件中来.在webForm.aspx.cs页面,或者其他页面去获取这个值就可以了 注意是在<appSettings></appSettings>文件中进行配置. <?xml version="1.0" encoding=&qu

AO如何获取SDE数据库中的数据

/// <summary> /// 获取Table类型表的记录 /// </summary> /// <param name="relationCheckClass"></param> /// <returns></returns> private List<string> GetAllRecordFormTTable(RelationCheckClass relationCheckClass) { L

javascript获取页面路径中的参数

1 function getUrlParam() { 2 //获取连接地址 3 var url = document.location.toString(); 4 //分隔开连接,用?把传的值取出来 5 var arrObj = url.split("?"); 6 //创建一个空对象 7 var result = {}; 8 //判断连接里面是不是有值,如果有则执行下面操作 9 if (arrObj.length > 1) { 10 //取出所有传的值 11 var arrPar

WebAPi获取请求头中对应键值

/// <summary> /// 依据键获取请求头中值数据 /// </summary> /// <param name="request"></param> /// <param name="key"></param> /// <returns></returns> public static string GetHeader(this HttpRequestMess

&lt;Android&gt;关于获取资源文件R中的数据

通常我们都会使用context.getResources().getIdentifier(name, type,context.getPackageName())的方法去获取R.java中的数据. type--R其中的内部类名,如"drawable","string","color","dimen","layout"等,这也是我们常用的关于界面所需要获取的数据类型. name--R内部类中的static变量