整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

揭秘爬虫黑科技: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); }
    }}