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 Title標簽內容提取,輕松上手!

          一天,老板不滿地說:“喂,你這C#爬蟲怎么連標題都沒給我抓回來?我需要的是一份完整的報告,包括所有網頁的標題,趕緊給我重新抓一遍!”那一刻,我仿佛看到了老板眼中閃爍的怒火,感受到了他對我工作的失望。

          我仿佛看到了老板眼中閃爍的怒火,就像是火山即將爆發前的預兆。我心里咯噔一下,知道這次可能玩大了。

          我趕緊賠著笑臉說:“老板,真不好意思,這次是我的失誤。我馬上就去給您抓回那些‘逃跑’的標題!”

          其實我心里暗笑,因為那些標題我早就抓回來了,只是故意沒展示出來。這可是職場生存法則啊,不能一次交出所有秘密,得留點懸念,讓老板對你始終保持期待和好奇。你覺得這樣做對嗎?歡迎討論,哈哈!

          代碼其實很簡單:

          // 使用XPath查詢獲取title標簽
          HtmlNode titleNode = doc.DocumentNode.SelectSingleNode("//title");
          //這行代碼是使用C#的HtmlAgilityPack庫來從HTML文檔中提取<title>標簽的內容。
          //目的是從doc表示的HTML文檔中選擇第一個<title>標簽,并將這個標簽的節點對象賦值給titleNode變量。
          如果要獲取<title>標簽中的文本內容,這樣寫:
          string titleText = titleNode?.InnerText;
          這里,?.是一個null條件運算符,如果titleNode為null(也就是說沒有找到<title>標簽),
          則titleText會被賦值為null,否則,它會被賦值為<title>標簽中的文本內容。

          這個代碼是怎么使用的呢?下面我解釋下實現過程:

                  static string? ParseTitleData(string htmlContent)
                  {
                      if (string.IsNullOrEmpty(htmlContent))
                      {
                          return null;
                      }
                      HtmlDocument doc = new HtmlDocument();
                      doc.LoadHtml(htmlContent);
                      // 使用XPath查詢獲取title標簽
                      HtmlNode titleNode = doc.DocumentNode.SelectSingleNode("//title");
                      if (titleNode != null)
                      {
                          // 獲取title節點的文本內容
                          string titleText = titleNode.InnerText.Trim();
                          return "頁面標題: " + titleText;
                      }
                      else
                      {
                          // 如果沒有找到title標簽,返回null
                          return null;
                      }
                  }
          //這段代碼定義了一個名為 ParseTitleData 的靜態方法,
          //它接受一個 htmlContent 字符串作為輸入,并試圖從中解析出網頁的標題。
          //該方法使用 HtmlAgilityPack 庫來解析 HTML 內容。

          是不是很簡單?這個方法的目的是從給定的 HTML 內容中提取網頁的標題。如果成功找到標題,它會返回一個包含 "頁面標題: " 和實際標題的字符串。如果 HTML 內容為空、null 或不包含 <title> 標簽,它會返回 null。

          看效果:


          完整代碼是包括如何異步獲取網頁內容的。如果有朋友需要的話,請關注我并留言,今天就寫到這吧,太晚了,休息啦!

          ocument.write() 用法

          在JavaScript中document.write()函數可以向文檔寫入HTML表達式或JavaScript代碼,用法“document.write(exp1,exp2,exp3,....)”,該函數可接受任何多個參數,并將其寫入文檔中。

          document.write() 說明

          雖然根據 DOM 標準,該方法只接受單個字符串作為參數。

          我們通常按照兩種的方式使用 write() 方法:一是在使用該方在文檔中輸出 HTML,另一種是在調用該方法的的窗口之外的窗口、框架中產生新文檔。在第二種情況中,請務必使用 close() 方法來關閉文檔。

          document.write() 實例

           <html>
           <body>
           <script type="text/javascript">
           document.write("Hello World!");
           </script>
           </body>
           </html>
            

          以上就是JavaScript document.write() 用法的詳細內容。

          這里小編是一個有著10年工作經驗的前端高級工程師,關于web前端有許多的技術干貨,包括但不限于各大廠的最新面試題系列、前端項目、最新前端路線等。需要的伙伴可以私信我

          發送【前端資料】

          就可以獲取領取地址,免費送給大家。對于學習web前端有任何問題(學習方法,學習效率,如何就業)都可以問我。希望你也能憑自己的努力,成為下一個優秀的程序員

          、nuget 引用

          Select.HtmlToPdf

          2、方法

          • using SelectPdf;using System.Collections.Specialized;using System.IO;using System.Web;
            namespace BQoolCommon.Helpers.File{ public class WebToPdf { public WebToPdf() { //SelectPdf.GlobalProperties.LicenseKey = "your-license-key"; }
            /// <summary> /// 將 Html 轉成 PDF,並儲存成檔案 /// </summary> /// <param name="html">html</param> /// <param name="fileName">絕對路徑</param> public void SaveToFileByHtml(string html, string fileName) { var doc = SetPdfDocument(html); doc.Save(fileName); }
            /// <summary> /// 傳入 Url 轉成 PDF,並儲存成檔案 /// </summary> /// <param name="url">url</param> /// <param name="fileName">絕對路徑</param> /// <param name="httpCookies">Cookies</param> public void SaveToFileByUrl(string url, string fileName, NameValueCollection httpCookies) { var doc = SetPdfDocument(url, httpCookies); doc.Save(fileName); }
            /// <summary> /// 將 Html 轉成 PDF,並輸出成 byte[] 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public byte[] GetFileByteByHtml(string html) { var doc = SetPdfDocument(html); return doc.Save(); }
            /// <summary> /// 傳入 Url 轉成 PDF,並輸出成 byte[] 格式 /// </summary> /// <param name="url">url</param> /// <param name="httpCookies">Cookies</param> /// <returns></returns> public byte[] GetFileByteByUrl(string url, NameValueCollection httpCookies) { var doc = SetPdfDocument(url, httpCookies); return doc.Save(); }
            /// <summary> /// 將 Html 轉成 PDF,並輸出成 Stream 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public Stream GetFileStreamByHtml(string html) { var doc = SetPdfDocument(html); var pdfStream = new MemoryStream();
            doc.Save(pdfStream); pdfStream.Position = 0;
            return pdfStream; }
            /// <summary> /// 傳入 Url 轉成 PDF,並輸出成 Stream 格式 /// </summary> /// <param name="html">html</param> /// <returns></returns> public Stream GetFileStreamByUrl(string url, NameValueCollection httpCookies) { var doc = SetPdfDocument(url, httpCookies); var pdfStream = new MemoryStream();
            doc.Save(pdfStream); pdfStream.Position = 0;
            return pdfStream; }
            private PdfDocument SetPdfDocument(string html) { var converter = new HtmlToPdf();
            converter.Options.WebPageWidth = 1200; html = HttpUtility.HtmlDecode(html);
            return converter.ConvertHtmlString(html); }
            private PdfDocument SetPdfDocument(string url, NameValueCollection httpCookies) { var converter = new HtmlToPdf(); converter.Options.WebPageWidth = 1200;
            if (httpCookies != && httpCookies.Count != 0) { converter.Options.HttpCookies.Add(httpCookies); }
            return converter.ConvertUrl(url); }
            }}

          主站蜘蛛池模板: 国产无吗一区二区三区在线欢| 人妻少妇一区二区三区| 成人一区专区在线观看| 无码一区二区三区| 91video国产一区| 亚洲bt加勒比一区二区| 亚洲国产综合精品中文第一区| 一区二区在线观看视频| 亚洲成AV人片一区二区密柚 | 波多野结衣中文一区二区免费| 天美传媒一区二区三区| 亚洲福利视频一区二区| 久久精品一区二区三区资源网| 97一区二区三区四区久久| 日韩精品一区二三区中文| 中文字幕在线无码一区二区三区| 人体内射精一区二区三区| 在线不卡一区二区三区日韩| 国模无码一区二区三区不卡| 亚洲福利秒拍一区二区| 无码人妻一区二区三区精品视频| 亚洲老妈激情一区二区三区| 亚洲国产欧美国产综合一区| 国产高清在线精品一区小说| 91久久精品午夜一区二区| 国产精品盗摄一区二区在线| 亚洲国产一区国产亚洲| 亚洲日本一区二区三区在线 | 国产精品成人99一区无码| 精品一区二区无码AV| 亚洲高清一区二区三区| 国产精品成人一区二区| 亚洲香蕉久久一区二区三区四区| 无码人妻精品一区二区蜜桃百度| 搡老熟女老女人一区二区| 国产成人综合精品一区| 糖心vlog精品一区二区三区| 久久99国产精品一区二区| 日韩一区二区精品观看| 91视频国产一区| 中文字幕一精品亚洲无线一区|