网页信息抓取

hbsyhx 2015-06-25 03:53:41
已经获得了网页代码,现在正则表达式不知道如何去写,去获取我想要的内容。
以下图片表格中为想要获取的内容。

URL为http://www.zjzwfw.gov.cn/zjzw/admins/article/articleshow.do?itemId=9630&mainCode=01178&deptId=001003002&category=其他行政权力
下面是后台代码
public void GetGeneralContent()
{
string strUrl = txtwz.Text.Trim();
WebRequest request = WebRequest.Create(strUrl);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312"));
//reader.ReadToEnd() 表示取得网页的源码
MatchCollection TitleMatchs = Regex.Matches(reader.ReadToEnd(), @"正则表达式", RegexOptions.IgnoreCase | RegexOptions.Multiline);

string mc = "";
foreach (Match NextMatch in TitleMatchs)
{
mc += NextMatch.Groups[1].Value;
}

//想获取名称(mc)、 类别、行政主体、行使层次、实施依据、备注的内容,获取成功后,insert到数据库中。
reader.Close();
reader.Dispose();
response.Close();

}

protected void btnSave_Click(object sender, EventArgs e)
{
GetGeneralContent();
}


刚学习.net,不知道写的对不对,说明白否,希望大家帮帮忙哈。
...全文
191 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
myhope88 2015-06-26
  • 打赏
  • 举报
回复
学习正则表达式吧
hbsyhx 2015-06-25
  • 打赏
  • 举报
回复
zhcnlei: 其中HttpHelper和StringHelper,都提示不存在,这个是怎么回事啊,谢谢。
zhcnlei 2015-06-25
  • 打赏
  • 举报
回复

这是 xpath 的获取方式, chrome 会自动为 table 添加 tbody 使用的时候可能要去掉 tbody。
zhcnlei 2015-06-25
  • 打赏
  • 举报
回复


[TestMethod]
public void GetHtmlContent()
{
string url = "http://www.zjzwfw.gov.cn/zjzw/admins/article/articleshow.do?itemId=9630&mainCode=01178&deptId=001003002&category=%E5%85%B6%E4%BB%96%E8%A1%8C%E6%94%BF%E6%9D%83%E5%8A%9B";

HtmlDocument doc = new HtmlDocument();

doc.LoadHtml(HttpHelper.Get(url));

var mainNode = doc.DocumentNode;

WriteText(mainNode, "类别", "/html/body/table[3]/tr/td/table[4]/tr/td/table[3]/tr/td/table[1]/tr/td[2]");
WriteText(mainNode, "浙江省发展和改革委员会", "/html/body/table[3]/tr/td/table[4]/tr/td/table[3]/tr/td/table[2]/tr/td[2]");
WriteText(mainNode, "行使层级", "/html/body/table[3]/tr/td/table[4]/tr/td/table[3]/tr/td/table[2]/tr/td[4]");
WriteText(mainNode, "实施依据", "/html/body/table[3]/tr/td/table[4]/tr/td/table[3]/tr/td/table[3]/tr/td[2]/p");
WriteText(mainNode, "备注", "/html/body/table[3]/tr/td/table[4]/tr/td/table[3]/tr/td/table[4]/tr/td[2]");
}

public void WriteText(HtmlNode node, string name, string xpath)
{
var textNode = node.SelectSingleNode(xpath);
string text = string.Empty;
if (textNode != null)
{
text = StringHelper.FilterHTML(textNode.InnerText).Trim();
}
Console.WriteLine(name + ":" + text);
}


使用组件 HtmlAgilityPack

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧