c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版
在通过:
了解了抓取网页的一般流程之后,加上之前介绍的:
应该就很清楚如何利用工具去抓取网页,并分析源码,获得所需内容了。
下面,就来通过实际的例子来介绍,如何通过Python语言,实现这个抓取网页并提取所需内容的过程:
假设我们的需求是,从我(crifan)的Songtaste上的页面:
先抓取网页的html源码,然后再提取其中我的songtaste上面的名字:crifan
对应的html代码为:
crifan
此任务,相对很简单。下面就来说说,如何用C#来实现。
新建一个C#项目,使用.NET Framework 2.0,设置一些基本的控件用于显示。
相关的,先写出,获得html的代码:using System.Net;
using System.IO;
//step1: get html from url
//http://www.songtaste.com/user/351979/
string urlToCrawl = txbUrlToCrawl.Text;
//generate http request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlToCrawl);
//use GET method to get url's html
req.Method = "GET";
//use request to get response
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
string htmlCharset = "GBK";
//use songtaste's html's charset GB2312 to decode html
//otherwise will return messy code
Encoding htmlEncoding = Encoding.GetEncoding(htmlCharset);
StreamReader sr = new StreamReader(resp.GetResponseStream(), htmlEncoding);
//read out the returned html
string respHtml = sr.ReadToEnd();
rtbExtractedHtml.Text = respHtml;
对应的,UI中,点击按钮“抓取网页html源码”:
可以获得对应的html了:
注意:
此处,需要根据你的需要,而决定是否关心html的编码类型(charset);
以及,此处为何使用GBK的编码,不了解的均可参考:
然后获得了html之后,再去通过C#中的正则表达式库函数,Regex,去提取出我们想要的数据:using System.Text.RegularExpressions;
//step2: extract expected info
//
crifan
string h1userP = @"
(?.+?)
";
Match foundH1user = (new Regex(h1userP)).Match(rtbExtractedHtml.Text);
if (foundH1user.Success)
{
//extracted the expected h1user's value
txbExtractedInfo.Text = foundH1user.Groups["h1user"].Value;
}
else
{
txbExtractedInfo.Text = "Not found h1 user !";
}
点击“提取所需的信息”,即可提取出我们要的h1user的值crifan:
对应的完整的C#代码为:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Text.RegularExpressions;
namespace crawlWebsiteAndExtractInfo
{
public partial class frmCrawlWebsite : Form
{
public frmCrawlWebsite()
{
InitializeComponent();
}
private void btnCrawlAndExtract_Click(object sender, EventArgs e)
{
//step1: get html from url
//http://www.songtaste.com/user/351979/
string urlToCrawl = txbUrlToCrawl.Text;
//generate http request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlToCrawl);
//use GET method to get url's html
req.Method = "GET";
//use request to get response
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
string htmlCharset = "GBK";
//use songtaste's html's charset GB2312 to decode html
//otherwise will return messy code
Encoding htmlEncoding = Encoding.GetEncoding(htmlCharset);
StreamReader sr = new StreamReader(resp.GetResponseStream(), htmlEncoding);
//read out the returned html
string respHtml = sr.ReadToEnd();
rtbExtractedHtml.Text = respHtml;
}
private void btnExtractInfo_Click(object sender, EventArgs e)
{
//step2: extract expected info
//
crifan
string h1userP = @"
(?.+?)
";
Match foundH1user = (new Regex(h1userP)).Match(rtbExtractedHtml.Text);
if (foundH1user.Success)
{
//extracted the expected h1user's value
txbExtractedInfo.Text = foundH1user.Groups["h1user"].Value;
}
else
{
txbExtractedInfo.Text = "Not found h1 user !";
}
}
private void lklTutorialUrl_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string tutorialUrl = "https://www.crifan.com/crawl_website_html_and_extract_info_using_csharp";
System.Diagnostics.Process.Start(tutorialUrl);
}
}
}
完整的VS2010的项目,可以去这里下载:
【总结】
总的来说,使用C#抓取网站,从返回的html源码中提取所需内容,相对之前的Python,还是要复杂一些的。
因为要手动处理很多和http相关的request,response,以及stream,编码类型等内容。
c 中html抓取页面图片,【教程】抓取网并提取网页中所需要的信息 之 C#版相关推荐
- html抓取网址某链接,URL 筛选小工具 提取网页中的链接地址
http://blog.360dseo.com/html/826.html 作者: 不详 发布时间:2014-4-23 16:46:19 这个VBS是用来将一个本地网页中的URL筛选出来并保存在新的网 ...
- php 抓取页面图片,php 抓取网页内容与图片的方法
这篇文章主要介绍了关于php 抓取网页内容与图片的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 例子1:<?php include_once("curl.php& ...
- php提取网页mp3,怎么提取网页中的音乐|下载网页中的音乐 网页音乐提取工具及使用教程分享...
相信很多人都比较了解怎么下载网页上的视频吧,那么现在怎么提取网页中的音乐或者说怎么下载网页中的音乐 ,嗯~ o(* ̄▽ ̄*)o ,不懂的孩纸,路过走过不要错过啦,快来看看小编分享的网页音乐提取工具及使 ...
- Delphi提取网页中的图片
无意中,在csdn论坛中看到关于"提取网页中的图片资源"的帖子,特摘抄之. simonhehe提供相关代码如下: procedure TfrmMain.DomImg2Image(w ...
- HtmlParser提取网页中的纯文本信息
转载自 HtmlParser提取网页中的纯文本信息 HTMLParser 一个解析web页面的开源类库. 准备学习下搜索方面的技术,就学习了些网络爬虫的知识.最近一直在一个点上 ...
- 一次性提取网页中所有图片的代码
一次性提取网页中所有图片的代码 打开有图片的网页,在地址栏中输入: javascript:Ai7Mg6P='';for%20(i7M1bQz=0;i7M1bQz<document.images. ...
- 利用正则表达式提取网页中Table内的数据
利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...
- 如何提取网页中的blob加密视频
如何提取网页中的blob加密视频 一.场景 一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的: 视频网址:"blob:https://us.flu ...
- 正则表达式提取网页中的网址
正则表达式提取网页中的网址,并用匿名函数 #coding=utf-8 import res="https://www.baidu.com/message.asp?id=35" re ...
最新文章
- 可可肉的奋斗(第一天)2012-12-24
- 4.1 Qt绘图原理
- Ant Design(ui框架)
- Centos实现svn本地认证apache认证
- python处理ncdc气象数据并利用arcgis可视化
- Java之Set接口
- 基于界面自动化测试框架的发展
- Tell me why -- Declan Galbraith
- null value in entry: destinationDir=null
- jQuery设置文本框回车事件
- colmap 稀疏重建输出的cameras.txt, images.txt,points3D.txt含义
- 计算机考研计算机网络题库
- Useful webs
- Mac流程图制作工具推荐——Diagrams
- 记一次被QQ邮箱钓鱼邮件事件
- P35-前端基础-新闻列表
- 分光器尺寸及光损耗计算
- C语言实现求n的阶乘(n!),阶乘的和。
- win10计算机管理器在哪,Windows10开启服务管理器图文教程|Win10系统服务管理器在哪...
- osgearth加载本地离线影像瓦片地图
热门文章
- Bash脚本和/ bin / bash ^ M:错误的解释器:没有这样的文件或目录[重复]
- 用argparse解析布尔值
- 我正在运行哪个版本的PostgreSQL?
- Java的“ for each”循环如何工作?
- 利用ros3d.js实现 turtlebot3 在web 端显示并导航
- MyBatis的懒加载(延迟加载)
- c++ opencv实现区域填充_利用opencv之为图像添加边框
- php 命令设计模式示例,php设计模式(十九)命令模式-Fun言
- eas报错日记_(FAQ)EAS服务启动失败[金蝶EAS]
- 使用IDEA创建Maven项目教程