Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
Html Agility Pack是一個(gè)HTML解析器,用于讀/寫(xiě)DOM對(duì)象,支持普通的xpath或xslt。
它是一個(gè).NET開(kāi)源庫(kù),提供解析HTML文件,具有一定的容錯(cuò)機(jī)制。
使用簡(jiǎn)單,解析速度快,一般使用在抓取網(wǎng)頁(yè)數(shù)據(jù)中。
https://github.com/zzzprojects/html-agility-pack
https://www.nuget.org/packages/HtmlAgilityPack/
https://stackoverflow.com/questions/tagged/html-agility-pack
// From File
var doc=new HtmlDocument();
doc.Load(filePath);
// From String
var doc=new HtmlDocument();
doc.LoadHtml(html);
// From Web
var url="http://html-agility-pack.net/";
var web=new HtmlWeb();
var doc=web.Load(url);
tmlParse 是一款基于windwos平臺(tái)的HTML文檔解析工具,可快速構(gòu)建DOM樹(shù),從而輕松實(shí)現(xiàn)網(wǎng)頁(yè)元素的爬取工作。DOM樹(shù)就是一個(gè)HTML文檔的節(jié)點(diǎn)樹(shù),每個(gè)節(jié)點(diǎn)由:標(biāo)簽(Tag)、屬性(Attribute)、文本(Text)三個(gè)值來(lái)描述。
所謂的HTML文檔解析,指的就是如何構(gòu)建一顆DOM樹(shù),只有成功構(gòu)建出DOM樹(shù),才有可能進(jìn)行后續(xù)的數(shù)據(jù)爬取和分析工作。顯然,構(gòu)建DOM樹(shù)是比較復(fù)雜的過(guò)程,因?yàn)椴皇敲恳粋€(gè)HTML文檔都會(huì)嚴(yán)格按照規(guī)范來(lái)書(shū)寫(xiě),因此解析過(guò)程需要具有一定容錯(cuò)能力。此外,解析效率也是一個(gè)需要考慮的因素,也就是說(shuō)最好通過(guò)一次文檔掃描即可建立起DOM樹(shù),而不是反復(fù)掃描。
下面是HtmlParse介紹。
1、綠色純天然,無(wú)任何第三方依賴庫(kù),文件大小不到150K; 2、解析速度快,具有一定的HTML語(yǔ)法容錯(cuò)能力,可快速將HMTL文檔解析為DOM樹(shù); 3、基于命令行參數(shù),可通過(guò)不同參數(shù)獲取指定TAG的屬性值和文本內(nèi)容,從而實(shí)現(xiàn)網(wǎng)頁(yè)爬取功能; 4、可將爬取數(shù)據(jù)輸出為json格式,方便第三方程序進(jìn)一步分析和使用; 5、可爬取script腳本到指定的js文件中;
下載地址:http://softlee.cn/HtmlParse.zip
HtmlParse HtmlPathFile -tag TagName [-attr] [Attribute] [-o] [JsonPathFile]
解析指定的HTML文檔,并將文檔中指定的標(biāo)簽及屬性輸出到指定文件中。
HtmlPathFile:必選參數(shù),要解析的HTML文檔路徑名,如果文件路徑中有空格,可使用雙引號(hào)將文件路徑包含;
-tag:必選參數(shù),用于指定要抓取的HTML標(biāo)簽名稱(chēng); -attr:可選參數(shù),用于指定標(biāo)簽的屬性值,如果不指定,則返回該標(biāo)簽的所有屬性值; -o:可選參數(shù),用于指定抓取內(nèi)容輸出的文件,可將抓取的內(nèi)容保存為json格式的文件。 如果該參數(shù)不指定,則進(jìn)行控制臺(tái)輸出。 如果抓取的是script、style則會(huì)保存為js格式文件。
如果要抓取doctype,可使用-tag doctype,將整個(gè)doctype內(nèi)容獲取。此時(shí)將會(huì)忽略-attr指定的任何屬性值。
1、爬取網(wǎng)頁(yè)中所有超鏈接
HtmlParse c:/sina.html -tag a -attr href -o c:/sina.json
解析C盤(pán)下的sina.html文檔,并提取該文檔中的所有超鏈接到sina.json文件中。其中**-tag a -attr href,用于指定獲取超鏈接標(biāo)簽a的href**屬性。
2、爬取網(wǎng)頁(yè)中所有圖片鏈接
HtmlParse c:/sina.html -tag img -attr src -o c:/sina.json
解析C盤(pán)下的sina.html文檔,并提取該文檔中的所有圖片鏈接到sina.json文件中。
3、爬取網(wǎng)頁(yè)中所有腳本
HtmlParse c:/sina.html -tag script -o c:/sina.js
解析C盤(pán)下的sina.html文檔,并提取該文檔中的所有腳本函數(shù)到sina.js文件中。
如果通過(guò)-o參數(shù)指定輸出文件,則會(huì)生成一個(gè)json格式的文檔。 TagName為爬取的標(biāo)簽名稱(chēng),比如超鏈接的a,其值是一個(gè)json數(shù)組,數(shù)組中的每個(gè)內(nèi)容為Json對(duì)象,每個(gè)Json對(duì)象,有屬性和文本構(gòu)成。如果-attr 指定了要爬取的屬性,則AttrName為指定的屬性名稱(chēng),比如href或src。text為該標(biāo)簽的文本內(nèi)容,有些標(biāo)簽不存在文本內(nèi)容,比如img、meta等,則該值為空。json格式如下:
{
"TagName":
{
{"AttrName":"AttrValue1", "text":"text1"}
{"AttrName":"AttrValue1", "text":"text2"}
}
}
下面是一個(gè)sina網(wǎng)頁(yè)的所有超鏈接json
{
"a": [{
"href": "javascript:;",
"text": "設(shè)為首頁(yè)"
}, {
"href": "javascript:;",
"text": "我的菜單"
}, {
"href": "https://sina.cn/",
"text": "手機(jī)新浪網(wǎng)"
}, {
"href": "",
"text": "移動(dòng)客戶端"
}, {
"href": "https://c.weibo.cn/client/guide/download",
"text": "新浪微博"
}, {
"href": "https://so.sina.cn/palmnews/web-sinanews-app-download.d.html",
"text": "新浪新聞"
}, {
"href": "https://finance.sina.com.cn/mobile/comfinanceweb.shtml",
"text": "新浪財(cái)經(jīng)"
}, {
"href": "https://m.sina.com.cn/m/sinasports.shtml",
"text": "新浪體育"
}, {
"href": "https://tousu.sina.com.cn/about_app/index?frompage=heimaopc",
"text": "黑貓投訴"
}, {
"href": "http://blog.sina.com.cn/lm/z/app/",
"text": "新浪博客"
}, {
"href": "https://games.sina.com.cn/o/kb/12392.shtml",
"text": "新浪游戲"
}, {
"href": "https://zhongce.sina.com.cn/about/app",
"text": "新浪眾測(cè)"
}, {
"href": "https://mail.sina.com.cn/client/mobile/index.php?suda-key=mail_app&suda-value=login",
"text": "新浪郵箱客戶端"
}, {
"href": "javascript:;",
"text": "關(guān)閉置頂"
}, {
來(lái)源:https://www.cnblogs.com/softlee/p/16374079.html
HTML(HyperText Markup Language,中文:超文本標(biāo)記語(yǔ)言)是一種用于創(chuàng)建網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容的標(biāo)記語(yǔ)言。它由一系列標(biāo)簽組成,這些標(biāo)簽描述了網(wǎng)頁(yè)中的各個(gè)元素和其它相關(guān)信息。通過(guò)使用HTML標(biāo)簽和屬性,開(kāi)發(fā)人員可以定義文本、圖像、鏈接、表格、表單等元素,并控制它們的外觀和行為。本文主要介紹HTML的基本概念、歷史背景和用途。
參考文檔:https://www.cjavapy.com/article/3297/
HTML實(shí)例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CJAVAPY編程之路(cjavapy.com)</title>
</head>
<body>
<h1>我的第一個(gè)標(biāo)題</h1>
<p>我的第一個(gè)段落。</p>
</body>
</html>
HTML文檔的后綴名可以是.html或.htm,都可以使用,沒(méi)有區(qū)別。
注意:對(duì)于中文網(wǎng)頁(yè)需要使用<meta charset="utf-8"> 聲明編碼,否則會(huì)出現(xiàn)亂碼。有些瀏覽器(如 360 瀏覽器)會(huì)設(shè)置 GBK 為默認(rèn)編碼,則你需要設(shè)置為<meta charset="gbk"> 。
1)標(biāo)簽(Tag)
HTML使用標(biāo)簽來(lái)定義網(wǎng)頁(yè)中的各個(gè)元素。標(biāo)簽通常以尖括號(hào)< >的形式出現(xiàn),如<p>表示段落,<img>表示圖像等。標(biāo)簽可以包含屬性,用于提供額外的信息或控制元素的行為。
2)元素(Element)
一個(gè)完整的HTML元素由開(kāi)始標(biāo)簽、內(nèi)容和結(jié)束標(biāo)簽組成。例如,<p>這是一個(gè)段落</p>就是一個(gè)完整的段落元素。
3)屬性(Attribute)
HTML標(biāo)簽可以具有屬性,用于提供元素的額外信息或控制元素的行為。屬性以鍵值對(duì)的形式出現(xiàn),例如<img src="image.jpg">中的src屬性指定了圖像的源文件。
4)文檔結(jié)構(gòu)
一個(gè)HTML文檔由<html>、<head>和<body>等標(biāo)簽組成。其中,<html>標(biāo)簽用于定義整個(gè)HTML文檔的根元素,<head>標(biāo)簽用于定義文檔的頭部信息,如標(biāo)題和樣式表鏈接,<body>標(biāo)簽用于定義文檔的主體內(nèi)容。
5)塊級(jí)元素和內(nèi)聯(lián)元素
HTML元素可以被分類(lèi)為塊級(jí)元素和內(nèi)聯(lián)元素。塊級(jí)元素以塊的形式顯示,獨(dú)占一行或一塊空間,如<p>、<div>等。內(nèi)聯(lián)元素以行內(nèi)的方式顯示,不會(huì)獨(dú)占一行,如<span>、<a>等。
6)嵌套
HTML元素可以嵌套在其他元素內(nèi)部,形成一個(gè)層次結(jié)構(gòu)。例如,<div>元素可以包含<p>元素,<p>元素可以包含<span>元素。
7)<!DOCTYPE> 聲明
HTML文檔的開(kāi)頭通常會(huì)包含一個(gè)DOCTYPE聲明,用于指定文檔的HTML版本。
例如:
<!DOCTYPE html>
<!DOCTYPE HTML>
<!doctype html>
<!Doctype Html>
HTML(HyperText Markup Language)是一種用于創(chuàng)建網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容的標(biāo)記語(yǔ)言,而Web瀏覽器(如谷歌瀏覽器,Internet Explorer,F(xiàn)irefox,Safari)是用于顯示和解釋HTML文檔的應(yīng)用程序。Web瀏覽器通過(guò)解析HTML文檔,將其轉(zhuǎn)換為可視化的網(wǎng)頁(yè)。瀏覽器會(huì)讀取HTML文檔中的標(biāo)簽和內(nèi)容,并根據(jù)這些標(biāo)簽和內(nèi)容的定義,渲染出網(wǎng)頁(yè)的結(jié)構(gòu)和樣式。HTML提供了各種標(biāo)簽和屬性,用于定義文本、圖像、鏈接、表格、表單等在網(wǎng)頁(yè)中的展示和交互方式。瀏覽器在解析HTML時(shí),會(huì)根據(jù)標(biāo)簽和屬性的定義,將文本顯示為段落、標(biāo)題或其他格式,顯示圖像、鏈接,并響應(yīng)用戶的交互操作。
通過(guò)HTML和Web瀏覽器的結(jié)合,用戶可以在瀏覽器中訪問(wèn)和瀏覽各種網(wǎng)頁(yè)內(nèi)容,包括網(wǎng)頁(yè)文本、圖像、視頻、音頻等多媒體元素,并與網(wǎng)頁(yè)進(jìn)行交互,如點(diǎn)擊鏈接、填寫(xiě)表單、提交數(shù)據(jù)等。
大部分瀏覽器中,直接輸出中文會(huì)出現(xiàn)中文亂碼的情況,需要在頭部將字符聲明為 UTF-8 或 GBK。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>
頁(yè)面標(biāo)題</title>
</head>
<body>
<h1>我的第一個(gè)標(biāo)題</h1>
<p>我的第一個(gè)段落。</p>
</body>
</html>
HTML有多個(gè)版本,每個(gè)版本都有不同的特性和改進(jìn)。
版本 | 發(fā)布時(shí)間 |
HTML | 1991 |
HTML+ | 1993 |
HTML 2.0 | 1995 |
HTML 3.2 | 1997 |
HTML 4.01 | 1999 |
XHTML 1.0 | 2000 |
HTML5 | 2014 |
1)HTML 1.0
HTML 1.0是最早的HTML版本,于1993年發(fā)布。它只包含一些基本的標(biāo)簽和屬性,用于創(chuàng)建簡(jiǎn)單的文本和鏈接。HTML 1.0的目標(biāo)是定義一種通用的超文本標(biāo)記語(yǔ)言。
2)HTML 2.0
HTML 2.0于1995年發(fā)布,是對(duì)HTML 1.0的改進(jìn)和擴(kuò)展。它引入了一些新的標(biāo)簽和屬性,如圖像標(biāo)簽和表格標(biāo)簽,以支持更豐富的內(nèi)容展示。
3)HTML 3.2
HTML 3.2于1997年發(fā)布,是對(duì)HTML 2.0的進(jìn)一步改進(jìn)。它引入了一些新的標(biāo)簽和屬性,如表單標(biāo)簽和框架標(biāo)簽,以支持交互性和頁(yè)面布局。
4)HTML 4.01
HTML 4.01于1999年發(fā)布,是對(duì)HTML 3.2的修訂和擴(kuò)展。它引入了更多的標(biāo)簽和屬性,如層標(biāo)簽和樣式表,以支持更靈活的頁(yè)面設(shè)計(jì)和樣式控制。
5)XHTML 1.0
XHTML(eXtensible HyperText Markup Language)是基于XML的HTML版本。XHTML 1.0于2000年發(fā)布,它嚴(yán)格遵循XML的語(yǔ)法規(guī)則,要求所有標(biāo)簽和屬性都要正確嵌套和閉合。
6)HTML5
HTML5是HTML的最新版本,于2014年正式發(fā)布。HTML5引入了許多新的特性和API,如語(yǔ)義化標(biāo)簽、多媒體支持、Canvas繪圖、本地存儲(chǔ)等。HTML5還支持響應(yīng)式設(shè)計(jì),以適應(yīng)不同設(shè)備和屏幕尺寸。
HTML是構(gòu)建網(wǎng)頁(yè)結(jié)構(gòu)和內(nèi)容的基礎(chǔ)語(yǔ)言,它提供了豐富的標(biāo)簽和屬性,使得開(kāi)發(fā)者可以創(chuàng)建各種類(lèi)型的網(wǎng)頁(yè),并實(shí)現(xiàn)不同的功能和效果。HTML用于定義網(wǎng)頁(yè)的整體結(jié)構(gòu),包括標(biāo)題、段落、列表、標(biāo)題、導(dǎo)航菜單等元素。通過(guò)使用不同的HTML標(biāo)簽和屬性,可以將文本、圖像、音頻、視頻等內(nèi)容組織起來(lái),并構(gòu)建頁(yè)面的層次結(jié)構(gòu)。HTML可以用于展示文本內(nèi)容和多媒體元素,如圖像、音頻和視頻。通過(guò)使用適當(dāng)?shù)腍TML標(biāo)簽和屬性,可以插入和顯示各種類(lèi)型的媒體內(nèi)容,從而使網(wǎng)頁(yè)更加豐富和吸引人。HTML提供了創(chuàng)建表單的標(biāo)簽和元素,可以用于收集用戶的輸入數(shù)據(jù)。通過(guò)使用表單元素如文本框、復(fù)選框、單選按鈕和下拉列表等,用戶可以輸入數(shù)據(jù)并提交給服務(wù)器進(jìn)行處理。
參考文檔:https://www.cjavapy.com/article/3297/
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。