使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码_实用技巧

Web 前端代码

复制代码 代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table cellpadding="1" cellspacing="1" bgcolor="#f1f1f1" style="text-align: center">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<tr>
<td>
标题
</td>
<td>
发布作者
</td>
<td>
发布时间
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor="#ffffff">
<td align="left">
<a href='<%#Eval("url") %>' target="_blank">
<%#Eval("title") %>
</a>
</td>
<td>
<a href='<%#Eval("authorUrl") %>' target="_blank">
<%#Eval("author") %>
</a>
</td>
<td>
<%#Eval("updatetime") %>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</div>
</form>
</body>
</html>

cs 后台代码:

复制代码 代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using S1;
using System.Net;
using System.IO;
using System.Text;
using HtmlAgilityPack;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string page = string.Empty;
if (!IsPostBack)
{
WebClient wc = new WebClient();
string address = "http://www.cnblogs.com";
if (!string.IsNullOrEmpty(Request.QueryString["p"]))
{
address += "/" + Request.QueryString["p"];//分页,p=p2,p=p3
}
Stream stream = wc.OpenRead(address);
StreamReader sr = new StreamReader(stream, Encoding.UTF8);
string html = sr.ReadToEnd();
//实例化HtmlAgilityPack.HtmlDocument对象
HtmlDocument doc = new HtmlDocument();
//载入HTML
doc.LoadHtml(html);
//根据HTML节点NODE的ID获取节点
HtmlNode navNode = doc.GetElementbyId("post_list");
//div[2]表示文章链接a位于post_list里面第3个div节点中
HtmlNodeCollection list = navNode.SelectNodes("//div[2]/h3/a"); //根据XPATH来索引节点
Cnblogs cnblogs = null;
IList<Cnblogs> cnlist = new List<Cnblogs>();
foreach (HtmlNode node in list)
{
cnblogs = new Cnblogs();
//获取文章链接地址
cnblogs.url = node.Attributes["href"].Value.ToString();
//获取文章标题
cnblogs.title = node.InnerText;
cnlist.Add(cnblogs);
}
HtmlNodeCollection list1 = navNode.SelectNodes("//div[2]/div/a");
for (int i = 0; i < cnlist.Count; i++)
{
cnlist[i].author = list1[i].InnerText;
cnlist[i].authorUrl = list1[i].Attributes["href"].Value.ToString();
cnlist[i].updatetime = list1[i].NextSibling.InnerText.Replace("发布于", "").Trim();
}
this.Repeater1.DataSource = cnlist;
this.Repeater1.DataBind();
}
}
public class Cnblogs
{
public string title { get; set; }
public string url { get; set; }
public string author { get; set; }
public string authorUrl { get; set; }
public string updatetime { get; set; }
}
}

时间: 2024-09-29 07:55:55

使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码_实用技巧的相关文章

基于JQuery的抓取博客园首页RSS的代码_jquery

效果图:实现代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http

.net mvc页面UI之Jquery博客日历控件实现代码_实用技巧

一.效果图 二.页面文件 页面上需要添加<div id="cal"></div>标记. 三.JS代码 复制代码 代码如下: // JavaScript 日历 $(document).ready(function () {     //当前时间     $now = new Date();                      //当前的时间     $nowYear = $now.getFullYear();          //当前的年     $now

利用正则表达式抓取博客园列表数据_正则表达式

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

利用正则表达式抓取博客园列表数据

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

python抓取安居客小区数据的程序代码

某功能需要一套城市所有小区的位置信息数据,一开始是使用的百度地图api来进行关键词搜索,勉强能用,但数据量非常少,还是有大量的社区/小区搜不到.周末在家上网时发现安居客上直接就有每个城市的小区大全,欣喜若狂,于是就立即写了个爬虫试试.以下贴代码,python2.7,lxml+request库. #coding=utf-8 #author : zx #date   : 2015/07/27 import requests import MySQLdb import time import stri

求助:Java怎么样实现爬虫,抓取博客里面的所有文章,希望指点下该从哪里学习,推荐一些书籍之类的

问题描述 经常逛博客,看到很多文章想保存起来,到Kindle里面看,于是就有了抓取博客里面所有文章的需求,但是不知道该怎么实现,自己也查了一下,但大部分都是讲的原理或者直接贴代码,希望大婶们推荐点相关的书籍供研究学习哈 解决方案 解决方案二:不知道你是不是专门做爬虫的,爬虫很广的.简单的就是页面数据提取.解决方案三:自己做demo爬些文本数据很简单,就像你说的网上很多demo都可以.不过建议你用Jsoup,当你拿到网页Html内容以后,Jsoup帮你构建出一个Dom树,你可以像在浏览器中使用jq

解决方案-GET抓取安居客网页数据频繁了被屏蔽怎么绕过他的验证?

问题描述 GET抓取安居客网页数据频繁了被屏蔽怎么绕过他的验证? 用火车头采集安居客,但是一会就会全部跳转到输入验证码页面验证了才能正常访问,除了用代理还有其他的解决方案吗? 解决方案 只能换ip,既然服务器封了就没办法了.不过网上有那种代理服务器api,几块钱一天,可以获取上万的不同ip,可以说基本上也就相当于没限制. 解决方案二: 活该,谁叫你频繁地搞,搞到手的数据就存起来用啊.不如果不用等待答复的,直接构造IP包发送请求就完了. 解决方案三: 用神箭手云爬虫吧,平台自动帮你解决这种ip啊,

[Python学习] 简单网络爬虫抓取博客文章及思想介绍

        前面一直强调Python运用到网络爬虫方面非常有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简单介绍下Python是如何爬去网络数据的,文章知识非常简单,但是也分享给大家,就当简单入门吧!同时只分享知识,希望大家不要去做破坏网络的知识或侵犯别人的原创型文章.主要包括:         1.介绍爬取CSDN自己博客文章的简单思想及过程         2.实现Python源码爬取新浪韩寒博客的316篇文章 一.爬虫的简单思想      最近看刘兵

javascript实现博客园页面右下角返回顶部按钮_javascript技巧

博客园中很多博友的博客中在Page右下角都有个图标,不论屏幕怎么拉伸,都始终停留在右下角.点击后页面置顶.后面想想写一个Demo来实现这种效果吧.      一. 图标右下角固定. 1.SS 里面提供了4中布局方式. 其中fixed表示绝对定位元素.所以我们选择使用fixed来实现图标固定. absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", "right"