tmlAgilityPack 是一個 HTML 解析庫,用于 .NET 平臺。它允許開發(fā)者以類似于解析 XML 的方式,輕松地解析和操作 HTML 文檔。這個庫特別適合處理非標(biāo)準(zhǔn)的 HTML,例如那些格式不正確或包含錯誤的 HTML 文檔。
從原理上說,解析是一個 CPU 密集型操作。在計算資源充裕的情況下,使用多線程并行可以加快處理速度。
以下代碼展示了兩個場景:
使用一個線程解析 1000 個頁面
使用 8 個線程解析 1000 個頁面(總量 1000 個,測試機器上的 CPU 有 8 個內(nèi)核)。
string html = File.ReadAllText("PATH");
//One thread
for (int i = 0; i < 1000; i++)
new HtmlDocument().LoadHtml(html);
//Several threads
Parallel.For(0, 1000, (int i) => new HtmlDocument().LoadHtml(html));
然而實際的情況是:盡管多線程版本消耗了 2 ~ 3 倍的 CPU,但所花費的時間大致相同。而且 CPU 占用率一直維持在 30% 以下。即便更換了要處理的頁面,或者內(nèi)核數(shù)量更多的電腦,情況都差不多。
開啟更多的線程并不會提升處理的速度,這讓我開始懷疑是不是存在鎖的問題。遺憾的是沒有在源代碼中找到 lock ,但是發(fā)現(xiàn)了一個 Issues:
https://github.com/zzzprojects/html-agility-pack/issues/191
在使用 Profiler 工具對多線程程序進行分析之后,發(fā)現(xiàn)程序可能存在內(nèi)存瓶頸。根據(jù)他的觀察,有大約 50% 的 CPU 時間耗費在了內(nèi)存分配上。
這和使用的 GC 類型有關(guān),向 App.config 增加以下代碼可以解決該問題:
<runtime>
<gcServer enabled="true"/>
<gcConcurrent enabled="false" />
</runtime>
我的程序是一個使用 .NET 8.0 框架的控制臺,增加 App.config 文件之后并沒有效果。于是,我找到了微軟的官方文檔:
https://learn.microsoft.com/zh-cn/dotnet/core/runtime-config/garbage-collector
根據(jù)文檔所述,可以通過環(huán)境變量、runtimeconfig.json 文件或項目文件來指定程序使用 Server 版本。我選擇修改項目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
</Project>
問題得以解決:處理速度快了不少,CPU 占用維持在了 70% 左右。
多人都說HTML是一門很簡單的語言,看看書,看看視頻就能讀懂。但是,如果你完全沒有接觸過,就想通過看一遍教程,背背標(biāo)簽,想要完全了解HTML,真的有點太天真了。
HTML中文“超文本標(biāo)記語言”,英文名叫HTML沒有變量,沒有循環(huán),沒有函數(shù),只是單純的一門靜態(tài)語言而已。你可以用來描述靜態(tài)的東西,比如標(biāo)題、段落、圖片。
1)HTML通常被稱為靜態(tài)網(wǎng)頁。
2)HTML的一些標(biāo)簽代碼規(guī)則將內(nèi)容呈現(xiàn)在瀏覽器中所需的風(fēng)格。
3)HTML可以使用記事本創(chuàng)建,并以.html為擴展名保存。
打開瀏覽器,例如打開百度的首頁
這個頁面非常的簡潔,但是包含了很多內(nèi)容,有文字、圖片、動畫、超鏈接等一系列HTML頁面所能夠包含的元素。什么意思,也就是說,HTML頁面就是能夠包含文本、圖像、聲音、超鏈接等內(nèi)容的集合,然后通過瀏覽器對這些元素進行渲染,就呈現(xiàn)出多彩的頁面。
打開頁面的審查元素(快捷鍵是【F12】),就能夠看到構(gòu)成HTML頁面的所有元素,當(dāng)我們在寫頁面,對頁面進行調(diào)試的時候,也是通過審查元素,在這個窗口里面檢測問題,所以審查的方法一定要掌握。
一個HTML頁面最基本框架。
優(yōu)點
易于使用,松散的語法(雖然,過于靈活的將不符合標(biāo)準(zhǔn)),HTML還允許使用模板,這使設(shè)計網(wǎng)頁變得容易、對Web設(shè)計領(lǐng)域的初學(xué)者來說非常有用。幾乎所有瀏覽器都支持該功能。被廣泛使用的; 建立在幾乎所有網(wǎng)站上。與XML語法非常相似,后者已越來越多地用于數(shù)據(jù)存儲。免費-無需購買任何軟件,即使對于新手程序員而言,都易于學(xué)習(xí)和編碼。
缺點
由于它是一種靜態(tài)語言,它不能單獨產(chǎn)生動態(tài)輸出。有時,HTML文檔的結(jié)構(gòu)難以掌握。程序錯誤可能會導(dǎo)致高昂的代價。它只能創(chuàng)建靜態(tài)頁面和普通頁面,因此如果我們需要動態(tài)頁面,則HTML無效。需要編寫大量代碼來制作簡單的網(wǎng)頁。您必須跟上已棄用的標(biāo)記,并確保不要使用它們,因為出現(xiàn)了另一種與HTML兼容的語言代替了標(biāo)記的原始工作。因此需要學(xué)習(xí)其他語言(大多數(shù)情況下是CSS)HTML提供的安全功能受到限制。
在了解這么多之后,一定想要自己寫個HTML頁面試試手,那么HTML頁面怎么寫呢,用什么工具來寫呢?在電腦上建立一個hello.txt的文件,將下面的代碼粘貼復(fù)制進去保存 。
然后將后綴名修改為.html,用瀏覽器在頁面上看到hello world字樣的輸出,這就是第一個HTML頁面。
今天我們就先分享到這里啦,趕快去練練手吧~(私信我有免費IT課程可以領(lǐng)取喲)
段時間亞馬遜日本站出公告稱賣家不能在詳情頁面上使用HTML代碼后,其他站點的亞馬遜賣家就開始了一連串的問候:為什么美國站并沒有這個news?為什么歐洲站并沒有這個news?是不是新規(guī)只針對日本站?
現(xiàn)在亞馬遜給出答案:歐洲站以及美國站賣家也即將不能使用HTML標(biāo)簽了。
Listing新規(guī)重要通知6月27日起,亞馬遜詳情頁面將不再支持使用HTML標(biāo)記!
Amazon HTML禁令將于2021年6月9日生效,該禁令將終止在產(chǎn)品詳細(xì)信息頁面上使用任何HTML,6月8日是允許使用HTML的最后一天。
為了確保買家的安全,并提高在非HTML設(shè)備上顯示商品的通用性,于2021年6月27日之后,亞馬遜將不再支持在商品詳情頁面的商品描述中使用HTML標(biāo)記,并將停止顯示其HTML格式。
公告截圖如下:
請注意:各站點生效時間不一,請在賣家平臺查看“新聞”板塊。
建議賣家在上述日期之前更新所有商品詳情頁面中帶有HTML標(biāo)記的商品信息。您可以使用賣家平臺或常規(guī)渠道進行此類更新。
舉例說明:
如果商品描述的其中一行使用了HTML標(biāo)記,則該行可能會被刪除,也可能不顯示HTML格式,具體取決于HTML標(biāo)記的使用情況。
對于大多數(shù)賣家來說,您的產(chǎn)品詳細(xì)信息頁面上可能沒有HTML。但是,如果您在說明中插入了HTML,則需要在截止日期之前將其刪除。否則,該行將被刪除或顯示時不使用HTML格式,具體取決于自6月8日起使用的標(biāo)簽。
而Amazon僅允許將一種HTML代碼用作特殊用例,就是換行符。
新規(guī)來襲,賣家們不要驚慌,小編整理了相關(guān)常見問題,幫助各位更好地理解新規(guī),迅速找到解決方案。
1.之前使用HTML標(biāo)記的Listing是否受影響?還是只對新政策生效后新建的Listing有影響?
新規(guī)生效后,所有Listing都需符合新規(guī)要求。在2021年6月27日之后,亞馬遜將不支持在商品詳情頁面的商品描述中包含HTML標(biāo)簽,并將停止顯示其HTML格式。
2.新規(guī)生效后,還有哪些HTML標(biāo)記可以使用?
請勿在商品詳情頁面使用HTML、JavaScript或其他類型的代碼。在特殊情況下,賣家可以在描述中使用換行符 。
3.如果不做任何改變, 在這個政策生效之后,頁面呈現(xiàn)會發(fā)生怎樣的變化?
如果商品描述的其中一行使用了HTML標(biāo)記,則該行可能會被刪除,也可能不顯示HTML格式,具體取決于HTML標(biāo)記的使用情況。
4.新規(guī)是否會對關(guān)鍵詞抓取產(chǎn)生影響?
理論上不會影響,但可能會對頁面格式和頁面轉(zhuǎn)化率帶來影響。
5.應(yīng)對新規(guī),有什么解決方案建議嗎?
建議賣家使用A+頁面。A+頁面允許您利用圖片和文字的組合,通過展現(xiàn)場景化的商品圖片,來講述獨特的品牌故事,讓買家充分了解商品,增強宣傳效果進而提升銷售轉(zhuǎn)化。
目前A+頁面向日本站點賣家全面開放;北美和歐洲站點賣家必須先完成亞馬遜品牌注冊,才能使用A+頁面的豐富產(chǎn)品描述模版展示商品。
商品詳情頁也要注意:
買家通過商品詳情頁面了解賣家的商品,亞馬遜也對商品詳情頁面進行了嚴(yán)格規(guī)定,亞馬遜要求賣家確保每個商品詳情頁面包含單一商品,這有助于為買家提供清晰且一致的購買體驗。一般來說,賣家需要遵守以下規(guī)定:
1、遵守任何相關(guān)的風(fēng)格指南,避免使用HTML、JavaScript或其他代碼。
2、排除不適宜的內(nèi)容,如淫穢或攻擊性材料、鏈接或聯(lián)系信息、情節(jié)劇透、評論或評論請求以及廣告。
3、避免為已有詳情頁面的商品創(chuàng)建重復(fù)頁面。
4、準(zhǔn)確地分類和描述商品。
5、為新商品或新版本創(chuàng)建新的詳情頁面。
6、僅創(chuàng)建與主要商品相關(guān)的有效“變體”。
其中亞馬遜表明在商品詳情頁中不允許出現(xiàn):電話號碼、地址、在商品圖片上添加水印或者廣告。而且表明商品名稱不能超過200個字符(包括空格、符號)如果未能遵守這些標(biāo)準(zhǔn),會導(dǎo)致負(fù)面情況出現(xiàn),嚴(yán)重的情況會導(dǎo)致賣家銷售權(quán)永久取消。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。