[爬虫]通过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; }
}
转载于:https://www.cnblogs.com/taidou/p/4673306.html
[爬虫]通过url获取连接地址中的数据相关推荐
- PHP如何获取回调地址中的数据_php 回调地址,并返回参数的方法
header("Content-type: text/html; charset=utf-8"); /** * php 回调地址,并返回参数的方法 * parse_url * pa ...
- jquery如何获取iframe地址中的参数
对这样的需求,小编开发中也遇到了不少次了,我们经常会用到iframe弹出一个弹出框,有时候我们会因为需求而获取弹出框中地址中的参数,那么如何获取iframe地址中的参数呢? 如上图,若想要获取Cour ...
- C#获取动态网页中的数据
删除线格式 # C#获取动态网页中的数据 在实际工作需求中,编辑的文档需要获取历史地震的信息,所以利用计算机语言获取是一个简化人工操作的必要过程,本文分享一下自己第一次获取交互信息的爬虫经历! 操作流 ...
- mouted能不能访问data中的数据_Vue(定时器)解决mounted不能获取到data中的数据问题...
vue中data定义 data() { return { isok:10, } } 在vue中使用定时器 如下 mounted是钩子函数 mounted(){ console.log(this.iso ...
- Matplotlib可视化散点图、配置X轴为对数坐标、并使用线条(line)连接散点图中的数据点、基于分组变量配置数据点的颜色(connecting two coordinates with line
Matplotlib可视化散点图.配置X轴为对数坐标.并使用线条(line)连接散点图中的数据点.基于分组变量配置数据点的颜色(connecting two coordinates with line ...
- 【Proteus仿真】在AT24C04的连续地址中写入数据并循环读取
[Proteus仿真]在AT24C04的连续地址中写入数据并循环读取 Proteus仿真 实验说明 在AT24C04的地址0-9中分别写入数据,然后在while循环里面循环从AT24C04的地址0-9 ...
- mysql 截取字符串部分值,Mysql字符串截取_获取指定字符串中的数据
搜索热词 前言:本人遇到一个需求,需要在MysqL的字段中截取一段字符串中的特定字符,类似于正则表达式的截取,苦于没有合适的方法,百度之后终于找到一个合适的方法:substring_index('ww ...
- 获取csv表格中的数据
一.使用绝对路径获取import pandas as pd # 绝对路径,获取表格中的数据 abs_path = r'C:\Users\test.csv' df = pd.read_csv(abs_p ...
- 微信小程序 - 无法获取云端数据库中的数据的问题(修改云端数据库权限)
小程序中从云端数据库获取不到数据 从云端数据库中取数据 // 使用云数据库 const db = wx.cloud.database(); export default{data(){return { ...
最新文章
- 为什么索引可以让查询变快,你有思考过吗?
- Ubuntu20.04软件源更换
- 手把手教你将H5游戏打包为手游
- Codeforce 水题报告(2)
- python统计词频_Python统计四六级考试的词频
- C++静态类型成员变量的初始化顺序(单例模式)
- mysql设置查询结果最大值_查找MySQL查询结果字段的最大值
- 利用域名(host碰撞)碰撞实现从任何地方发起中间人攻击(理论篇)
- tomcat 软连接问题
- php 检测 变量是否设置,php判断变量是否定义
- lisp方格网法计算土方量_飞时达土方软件多级边坡土方量计算(选方格点放坡)...
- (2)颜色渐变及原理
- 丹阳眼镜购买攻略,其它城市可以此参考
- js打怪升级之路三 点出满天小星星
- 环信 android 发送消息,android 环信 集成发送消息崩溃
- 高三学生早恋怎么处理?家长该怎么做?
- PDF怎么转换成Excel?转后一页一个子表怎么合并?
- 【小波滤波】基于小波变换的噪声信号滤波处理matlab仿真
- 微信小程序服务器错误错误码404,微信小程序 云开发 错误代码 大全
- 用 C语言的写出几个小程序
热门文章
- 担心被机器人抢饭碗?亚马逊教 10 万员工这样保住工作
- 系统学习机器学习之监督学习
- 如何在CSDN博客中编辑公式?
- Docker部署配置相关使用总结
- php变量值随机,PHP生成各类随机数值
- python 用递归求质数_编写一个递归函数,它接受和整数,如果它的所有数字都是质数,则返回“True”...
- pycharm远程和本地同时_pycharm远程开发之django配置
- linux grunt环境,安装 Grunt - Grunt: JavaScript 世界的构建工具 | Grunt 中文网
- 在python中、列表中的元素可以是_在Python中存储一个列表的元素,在另一个列表中 – 通过引用?...
- @ControllerAdvice这个注解主要作用是什么