我这里有源代码,
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemLinq;
using SystemText;
using SystemWindowsForms;
using SystemTextRegularExpressions;
using SystemNet;
namespace DownPic
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private static Int64 i = 0;
public static string[] GetHtmlImageUrlList(string sHtmlText)
{
// 定义正则表达式用来匹配 img 标签
Regex regImg = new Regex(@"<img\b[^<>]\bsrc[\s\t\r\n]=[\s\t\r\n][""'][\s\t\r\n](<imgUrl>[^\s\t\r\n""'<>])[^<>]/[\s\t\r\n]>", RegexOptionsIgnoreCase);
// 搜索匹配的字符串
MatchCollection matches = regImgMatches(sHtmlText);
// int i = 0;
string[] sUrlList = new string[matchesCount];
// 取得匹配项列表
foreach (Match match in matches)
sUrlList[i++] = matchGroups["imgUrl"]Value;
return sUrlList;
}
private void button1_Click(object sender, EventArgs e)
{
if (folderBrowserDialog_CShowDialog() == DialogResultOK)
{
textBox_CText = folderBrowserDialog_CSelectedPath;
if (textBox_CTextLength > 3)
{
textBox_CText = textBox_CText + "\\";
}
}
}
private string result = null;
private string style()
{
string choose = null;
if (radioButton_jpgChecked)
{
choose = radioButton_jpgText;
}
else if (radioButton_pngChecked)
{
choose = radioButton_pngText;
}
return ""+choose;
}
private static Int64 k = 1;
private void button2_Click(object sender, EventArgs e)
{
try
{
WebClient client = new WebClient();
clientEncoding = SystemTextASCIIEncodingUTF8;
result = clientDownloadString(textBox_urlText);
}
catch (Exception ex)
{
MessageBoxShow("请输入地址!","警告", MessageBoxButtonsOK, MessageBoxIconWarning);
}
richTextBox_resourceText = result;
try
{
Regex regImg = new Regex(@"<img[^>]+src=\s(:'(<target>[^']+)'|""(<target>[^""]+)""|(<target>[^>\s]+))\s[^>]>", RegexOptionsIgnoreCase);
string[] s = GetHtmlImageUrlList(result);
string[] filepath = new string[sLength];
for (Int64 j = 0; j < sLength; j++,k++)
{
filepath[j] = @textBox_CText + k + style();
}
WebClient mywebclient = new WebClient();
for (Int64 i = 0; i < sLength; i++)
{
mywebclientDownloadFile(s[i], filepath[i]);
}
if (Form1i == 0)
{
MessageBoxShow("此网站无链接!", "提示", MessageBoxButtonsOK, MessageBoxIconInformation);
}
else
{
MessageBoxShow("下载成功,总数为 " + Form1i + " 张", "提示", MessageBoxButtonsOK, MessageBoxIconNone);
}
}
catch (Exception ex)
{
MessageBoxShow(exMessage);
// Form1i++;
}
}
private void textBox_url_TextChanged(object sender, EventArgs e)
{
label_urlShowText = textBox_urlText;
}
}
}
里面就有你想要的下载源码功能,这是我以前想要下载网站时候写的,不过有点问题,但是完全可以正确获取网站源码,希望能帮到你
<script type="text/javascript">
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&])(&|$)", "i");
var r = windowlocationsearchsubstr(1)match(reg);
if (r != null) return unescape(r[2]); return null;
}
//例如你响取得url中的id,然后在js把id这个变量放到你想放置的地方
var id = getQueryString('id');
//alert(id);
//拼装字符串的时候加进去即可 'mp3/' + id + 'mp4 type="video/mp4"'
</script>
用jquery的一种解决方法:例子如下:
testhtml:(注意,这里任何html页面都可以用,我只是在这里面加了个div
<div id='gettag'></div>,用来显示信息。jqueryjs可以在jquery上下载到,改下名字就可以,地址:>
思路:根据标签名称获取所有span对象,然后根据类名筛选出目标对象,最后使用 innerHTML 属性获取文本。实例演示如下:
1、HTML结构
<span class="xing">姓氏</span>
<span class="name">名字</span>
<span class="sheng">籍贯</span> <br>
<input type='button' value='获取class=name的span' onClick="fun()"/>
2、javascript代码
function fun(){
obj = documentgetElementsByTagName("span");
class_name = "name";
for(i in obj){
if(obj[i]className == class_name){
alert(obj[i]innerHTML);
return
}
}
}
3、效果演示
不知道理解的对不对,如果你的javascript最终用浏览器或者浏览器内核程序去解析,那么直接在js中写document就可以,如果用其他程序解析javascript那么需要扩展其程序支持document,遵循w3c,文档对象模型DOM,document在js中无非也是一个对象,由一些属性组成。如果你在后端想获取类似document对象的内容,那需要自定义其属性并解析获取的html源码,做对应实现。
IHTMLDocument2有个方法:HRESULT get_frames(IHTMLFramesCollection2 p)
原来我以为通过该方法可以得到网页内嵌框架的IHTMLDocument2接口,但试过不行!
后来找到一种方法,即通过IOleContainer接口的EnumObjects方法。代码如下:
void EnumFrame( IHTMLDocment2 pHTML )
{
CComQIPtr<IOleContainer> spContainer( pHTML );
if( spContainer )
{
CComPtr<IEnumUnknown> spEnumerator;
// 注:参数OLECONTF_EMBEDDINGS
// 表示列举容器内的所有嵌入对象
HRESULT hr = spContainer->EnumObjects(
OLECONTF_EMBEDDINGS, &spEnumerator);
if( spEnumerator )
{
CComPtr<IUnknown> spUnk;
ULONG uFetched;
while (spEnumerator->Next(1, &spUnk, &uFetched) == S_OK)
{
CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> spWB(spUnk);
if ( spWB )
{
ASSERT( spWB != m_spWebBrowser2 ) ;
CComPtr<IDispatch> spDocDisp;
hr = spWB->get_Document(&spDocDisp);
CComQIPtr<IHTMLDocument2> spHTML (spDocDisp) ;
if( spHTML )
{
EnumFrame( spHTML );
}}}}}
以上就是关于c# HtmlDocument返回网页源码全部的内容,包括:c# HtmlDocument返回网页源码、js获取地址栏参数document.getElementById("").innerHTML、如何提取显示一个html文档所有的标签,id值,class值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)