1<!DOCTYPE html> 2<html lang="en" > 3<head> 4 <!-- general !--> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 7 8 <!-- seo !--> 9 <title>Html Agility Pack</title> 10 <meta name="description" content="Learn Html Agility pack using Html Agility Pack (HAP) by documentation & example"> 11 12 <!-- webmaster tools --> 13 <meta name="google-site-verification" content="re-GbHmxz_CRM3DGvi2x_n1V857ruiYtjtS7Acu4nCs" /> 14 <meta name="msvalidate.01" content="89359D9C492A475C0061398008D105FB" /> 15 <meta name="yandex-verification" content="56060dc244208f1b" /> 16 <meta name="baidu-site-verification" content="bOGq0t96XR" /> 17 18 19 20 <!-- icon !--> 21 <link rel="icon" type="image/png" href="/images/logo.png"> 22 23 <!-- css !--> 24 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous"> 25 26 27 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> 28 <link rel="stylesheet" type="text/css" href="/assets/css/master.min.css?v=1.0.0.28062"> 29 30 31</head> 32 <body class="body-index"> 33 34 35<header class="site-header fixed-top"> 36 <div class="nav-site"> 37 <nav class="container-fluid navbar navbar-light navbar-expand-lg d-flex justify-content-between"> 38 39 <!-- brand --> 40 <a class="navbar-brand" href="/"> 41 <img src="/images/logo54x54.png" width="54" height="54" alt="zzz projects"> 42 43 <span class=""> 44 Html Agility 45 <span class="text-z">Pack</span> 46 </span> 47 48 </a> 49 50 <!-- toggle --> 51 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#nav-site-menu" 52 aria-controls="nav-site-menu" aria-expanded="false" aria-label="Toggle navigation"> 53 <span class="navbar-toggler-icon"> 54 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
55 viewBox="0 0 24 24" fill="currentColor"> 56 <path d="M3 6h18v2H3V6zm0 5h18v2H3v-2zm0 5h18v2H3v-2z"/> 57 </svg> 58 </span> 59 </button> 60 61 <div id="context-menu" class="d-flex justify-content-center"> 62 63 64 <a class="nav-link " href="/">Home</a> 65 <div class="dropdown"> 66 <button class="dropdown-toggle" type="button" id="dropdown-doc" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 67 Documentation 68 </button> 69 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> 70 71 <a class="nav-link" href="/documentation">Documentation</a> 72 <a class="nav-link" href="https://github.com/zzzprojects/html-agility-pack/releases">Release Notes</a> 73 <a class="nav-link" href="/third-party-library">3rd Party Libraries</a> 74 75 </div> 76 </div> 77 <a class="nav-link " href="/online-examples">Online Examples</a> 78 79 80 </div> 81 82 <!-- right --> 83 <div class="navbar-collapse collapse justify-content-end align-self-stretch align-items-center" id="nav-site-menu"> 84 85 <div class="hidden-lg-up"> 86 <!-- todo: will need another logic for prime --> 87 88 89<ul class="navbar-nav"> 90 <li class="nav-item "> 91 <a class="nav-link" href="/">Home</a> 92 </li> 93 <li class="nav-item "> 94 <a class="nav-link" href="/documentation">Documentation</a> 95 </li> 96 <li class="nav-item "> 97 <a class="nav-link" href="https://github.com/zzzprojects/html-agility-pack/releases">Release Notes</a> 98 </li> 99 <li class="nav-item "> 100 <a class="nav-link" href="/third-party-library">3rd Party Libraries</a> 101 </li> 102 <li class="nav-item "> 103 <a class="nav-link" href="/online-examples">Online Examples</a> 104 </li> 105</ul> 106 107 108 109 </div> 110 <ul class="navbar-nav prime free align-items-stretch align-self-stretch"> 111 <li class="nav-item nav-item-download d-flex"> 112 <a class="unique-btn align-self-center d-flex align-items-center" role="button" href="/download"> 113 <i class="fas fa-cloud-download-alt"></i> 114 Download 115 <i class="fa fa-angle-right"></i> 116 </a> 117 </li> 118 </ul> 119 120 121 </div> 122 123 </nav> 124 </div> 125 126</header> 127 128 129 130 131 <div class="side-body container-none page-index"> 132 <main> 133 134 135 136<div class="new-hero"> 137 <div id="particles-js-triangles"></div> 138 <h1> 139 <span class="title">Html Agility Pack (HAP)</span> 140 <span class="tag-line"></span> 141 </h1> 142 143 <div style="font-size: 24px; text-align: center; margin: 40px 0; position: relative; z-index: 30;">This library is sponsorised by <a href="https://entityframework-extensions.net/" target="_blank">Entity Framework Extensions</a></div> 144 145 <div class="container text-center bring-front"> 146 <div class="d-flex justify-content-center"> 147 <a href="/download" class="btn-only download" style="z-index: 1"> 148 <i class="fas fa-cloud-download-alt"></i> 149 Download Now 150 </a> 151 </div> 152 <br> 153 <div id="downloadCount"> 154 <div class="first-line">Downloaded more than</div> 155 <div class="counting" data-count="353054432">0</div> 156 <div class="last-line"> 157 <span>times !</span> 158 </div> 159 </div> 160 </div> 161 162 <div class="nectar-shape-divider-wrap " data-front="" data-style="curve" data-position="bottom"> 163 <svg class="nectar-shape-divider" fill="#ffffff" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 100" preserveAspectRatio="none"> 164 <path d="M 0 0 c 0 0 200 50 500 50 s 500 -50 500 -50 v 101 h -1000 v -100 z"></path> 165 </svg> 166 </div> 167 168 <div class="container-examples-index d-flex justify-content-center"> 169 <pre class="faux-code"> 170<div class="csharp"><pre> 171<span class="comment">// From File</span> 172<span class="keyword">var</span> doc = <span class="keyword">new</span> HtmlDocument(); 173doc.Load(filePath); 174 175<span class="comment">// From String</span> 176<span class="keyword">var</span> doc = <span class="keyword">new</span> HtmlDocument(); 177doc.LoadHtml(html); 178 179<span class="comment">// From Web</span> 180<span class="keyword">var</span> url = <span class="string">"http://html-agility-pack.net/"</span>; 181<span class="keyword">var</span> web = <span class="keyword">new</span> HtmlWeb(); 182<span class="keyword">var</span> doc = web.Load(url); 183</pre></div> 184</pre> 185 </div> 186</div> 187 188 189 190<div id="test-do" class="container faq"> 191 <h2 class="title-section-index text-center"></h2> 192 193 <div class="row"> 194 <div class="col-sm-4"> 195 <img src="/images/normal-what.png" alt="What&#39;s Html Agility Pack?"> 196 197 <br> 198 <br> 199 <h3 class="title">What's Html Agility Pack?</h3>
200 <span><p>HAP is an HTML parser written in C# to read/write DOM and supports plain XPATH or XSLT.</p> 201</span> 202 203 </div> 204 <div class="col-sm-4"> 205 <img src="/images/web-scraping.png" alt="What&#39;s web scraping in C#?"> 206 207 <br> 208 <br> 209 <h3 class="title">What's web scraping in C#?</h3> 210 <span><p>Web scraping is a technique used in any language such as C# to extract data from a website.</p> 211</span> 212 213 </div> 214 <div class="col-sm-4"> 215 <img src="/images/legal.png" alt="Is web scraping legal?"> 216 217 <br> 218 <br> 219 <h3 class="title">Is web scraping legal?</h3> 220 <span><p>That's a gray zone! There is no official answer about it, and almost every company has some web scraping program. In short, do polite crawling and don't spam a website and everything will be fine.</p> 221</span> 222 223 </div> 224 <div class="col-sm-4"> 225 <img src="/images/time.png" alt="When is the v2.x coming?"> 226 227 <br> 228 <br> 229 <h3 class="title">When is the v2.x coming?</h3> 230 <span><p>There is no official date, but the work is in progress. A lot of improvement is already planned to make web scraping even easier!</p> 231</span> 232 233 </div> 234 <div class="col-sm-4"> 235 <img src="/images/third-party.png" alt="Which 3rd party libraries?"> 236 237 <br> 238 <br> 239 <h3 class="title">Which 3rd party libraries?</h3> 240 <span><p>You can enhance HAP with some third party libraries:</p> 241<ul> 242<li><a href="https://www.nuget.org/packages/Fizzler.Systems.HtmlAgilityPack/" target="_blank">Fizzler (Css Selectors)</a></li> 243<li><a href="https://www.nuget.org/packages/ScrapySharp/" target="_blank">ScrapySharp</a></li> 244</ul> 245</span> 246 247 </div> 248 <div class="col-sm-4"> 249 <img src="/images/online-examples.png" alt="Where can I find Html Agility Pack examples?"> 250 251 <br> 252 <br> 253 <h3 class="title">Where can I find Html Agility Pack examples?</h3> 254 <span><p>Online examples are now available!</p> 255</span> 256 <a href="/online-examples" class="btn btn-only">Online Examples</a> 257 </div> 258 </div> 259</div> 260<div class="section dark achievements"> 261 <div class="container"> 262 <h2> 263 We need your help to support this Html Agility Pack! 264 </h2> 265 <div class="text-center"> 266 <p> 267 Html Agility Pack is FREE and <b>always will be</b>. 268 <br/><br/> 269 However, last year alone, we spent over <b>3000</b> hours maintaining our free projects! We need resources to keep developing our open-source projects. 270 <br/><br/> 271 We highly appreciate any contribution! 272 </p> 273 </div> 274 <br> 275 <div class="container-achievements"> 276 <div class="decorative-text"> 277 <img src="/images/customers.png"> 278 <span>> 3,000+ Requests</span> answered per year 279 </div> 280 281 <div class="decorative-text"> 282 <img src="/images/request.png"> 283 <span>> $100,000 USD</span> investment per year 284 </div> 285 <div class="decorative-text"> 286 <img src="/images/visitor.png"> 287 <span>> 500 Commits</span> per year 288 </div> 289 <div class="decorative-text"> 290 <img src="/images/downloads.png"> 291 <span>> 100 Releases</span> per year 292 </div> 293 </div> 294 <br> 295 296 <br> 297 <div class="text-center"><a href="https://zzzprojects.com/contribute" target="_blank"><img src="/images/paypal-donate.png"/></a></div> 298 </div> 299</div> 300 301<style> 302 .section.achievements .decorative-text span { 303 font-size: 24px; 304 } 305</style> 306 307<div class="index-section-features"> 308 <div class="container"> 309 <h2 class="title-section-index text-center"></h2> 310 <div class="example-feature"> 311 <div class="row"> 312 <div class="col-lg-5 wow slideInLeft"> 313 <h2 class="wow slideInUp"><p>HTML<span class="text-z"> Parser</span></p> 314</h2> 315 <p>Load and parse HTML</p> 316<ul> 317<li><i class="far fa-check-circle"></i>
317 <a href="http://html-agility-pack.net/parser">From File</a></li> 318<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/parser">From String</a></li> 319<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/parser">From Web</a></li> 320<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/parser">From Browser</a></li> 321</ul> 322 323 <div class="more-info"> 324 <a href="/parser" class="btn btn-lg btn-only" role="button"> 325 <i class="fa fa-book"></i> 326 Read More 327 </a> 328 </div> 329 </div> 330 <div class="col-lg-7 wow slideInRight"> 331 <div class="card card-code"> 332 <div class="card-header"> 333 <h5>HAP - Parser Example</h5> 334 </div> 335 <div class="card-body"> 336 <pre class="faux-code"> 337// From File 338var doc = new HtmlDocument(); 339doc.Load(filePath); 340 341// From String 342var doc = new HtmlDocument(); 343doc.LoadHtml(html); 344 345// From Web 346var url = "http://html-agility-pack.net/"; 347var web = new HtmlWeb(); 348var doc = web.Load(url); 349 350</pre> 351 </div> 352 </div> 353 </div> 354 </div> 355 </div> 356 <div class="example-feature"> 357 <div class="row"> 358 <div class="col-lg-5 wow slideInLeft"> 359 <h2 class="wow slideInUp"><p>HTML<span class="text-z"> Selectors</span></p> 360</h2> 361 <p>Select HtmlNode, Element, and Attributes:</p> 362<ul> 363<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/selectors">XPATH</a></li> 364<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/selectors">CSS <i>Coming Soon</i></a></li> 365<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/selectors">XDocument</a></li> 366<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/selectors">LINQ</a></li> 367</ul> 368 369 <div class="more-info"> 370 <a href="/selectors" class="btn btn-lg btn-only" role="button"> 371 <i class="fa fa-book"></i> 372 Read More 373 </a> 374 </div> 375 </div> 376 <div class="col-lg-7 wow slideInRight"> 377 <div class="card card-code"> 378 <div class="card-header"> 379 <h5>HAP - Selectors Examples</h5> 380 </div> 381 <div class="card-body"> 382 <pre class="faux-code"> 383// With XPath 384var value = doc.DocumentNode 385 .SelectNodes("//td/input") 386 .First() 387 .Attributes["value"].Value; 388 389// With LINQ 390var nodes = doc.DocumentNode.Descendants("input") 391 .Select(y => y.Descendants() 392 .Where(x => x.Attributes["class"].Value == "box")) 393 .ToList(); 394 395</pre> 396 </div> 397 </div> 398 </div> 399 </div> 400 </div> 401 <div class="example-feature"> 402 <div class="row"> 403 <div class="col-lg-5 wow slideInLeft"> 404 <h2 class="wow slideInUp"><p>HTML<span class="text-z"> Manipulation</span></p> 405</h2> 406 <p>Manipulate HtmlNode, Element, and Attributes:</p> 407<ul> 408<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/manipulation">AppendChild</a></li> 409<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/manipulation">CreateNode</a></li> 410<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/manipulation">InsertAfter</a></li> 411<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/manipulation">PrependChild</a></li> 412</ul> 413 414 <div class="more-info"> 415 <a href="/manipulation" class="btn btn-lg btn-only" role="button"> 416 <i class="fa fa-book"></i> 417 Read More 418 </a> 419 </div> 420 </div> 421 <div class="col-lg-7 wow slideInRight"> 422 <div class="card card-code"> 423 <div class="card-header"> 424 <h5>HAP - Manipulation Example</h5> 425 </div> 426 <div class="card-body"> 427 <pre class="faux-code"> 428var doc = new HtmlDocument(); 429doc.LoadHtml(html); 430 431// InnerHtml 432var innerHtml = doc.DocumentNode.InnerHtml; 433 434// InnerText 435var innerText = doc.DocumentNode.InnerText; 436 437</pre> 438 </div> 439 </div> 440 </div> 441 </div> 442 </div> 443 <div class="example-feature"> 444 <div class="row"> 445 <div class="col-lg-5 wow slideInLeft"> 446 <h2 class="wow slideInUp"><p>HTML<span class="text-z"> Traversing</span></p> 447</h2> 448 <p>Traverse HtmlNode, Element, and Attributes:</p> 449<ul> 450<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/traversing">ChildNodes</a></li> 451<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/traversing">Descendants()</a></li> 452<li><i class="far fa-check-circle"></i> <a href="http://html-agility-pack.net/traversing">Elements()</a></li> 453</ul> 454 455 <div class="more-info"> 456 <a href="/traversing" class="btn btn-lg btn-only" role="button"> 457 <i class="fa fa-book"></i> 458 Read More 459 </a> 460 </div> 461 </div> 462 <div class="col-lg-7 wow slideInRight"> 463 <div class="card card-code"> 464 <div class="card-header"> 465 <h5>HAP - Traversing Example</h5> 466 </div> 467 <div class="card-body"> 468 <pre class="faux-code"> 469var doc = new HtmlDocument(); 470htmlDoc.LoadHtml(html); 471
472// Descendants 473var nodes = doc.DocumentNode.Descendants("input"); 474 475</pre> 476 </div> 477 </div> 478 </div> 479 </div> 480 </div> 481 </div> 482</div> 483 484<style> 485 code { 486 color: #c00; 487 } 488</style> 489 490 491 </main> 492 </div> 493 494 495<footer class="site-footer"> 496 497 <!-- section-prime --> 498 <div class="section-prime"> 499 <div class=""> 500 <h4>Prime Projects</h4> 501 </div> 502 <div class=""> 503 <a class="btn btn-square" href="https://entityframework-extensions.net/" target="_blank" rel="nofollow"> 504 <span class="number">01</span> 505 Entity Framework Extensions 506 <i class="fa fa-angle-right"></i> 507 </a> 508 <a class="btn btn-square" href="https://dapper-plus.net/" target="_blank" rel="nofollow"> 509 <span class="number">02</span> 510 Dapper Plus 511 <i class="fa fa-angle-right"></i> 512 </a> 513 <a class="btn btn-square" href="https://eval-expression.net/" target="_blank" rel="nofollow"> 514 <span class="number">03</span> 515 C# Eval Expression 516 <i class="fa fa-angle-right"></i> 517 </a> 518 519 520 </div> 521 </div> 522 523 <!-- section-free --> 524 525 <div class="section-free d-block d-md-flex"> 526 <div class="section-newsletter col"> 527 <div class="hidden-md-down container-form"> 528 <span class="d-block">Subscribe to never miss the latest news.</span> 529 <a href="https://mailchi.mp/zzzprojects/newsletter" target="_blank" class="btn btn-sm btn-only"> 530 <i class="far fa-newspaper"></i> Newsletter 531 </a> 532 533 </div> 534 <div class="contact-us-footer"> 535 <div>Have any questions? Or just wanna have a nice chat?</div> 536 <a href="mailto:[email protected]">Contact us</a> 537 </div> 538 </div> 539 540 <div class="col content-free-projects"> 541 <div> 542 <h4>Free Projects from <a href="https://zzzprojects.com/">ZZZ Projects</a></h4> 543 </div> 544 <div class="d-flex justify-content-around"> 545 <div> 546 <a href="https://zzzcode.ai/" target="_blank" rel="nofollow"> 547 ZZZ Code AI 548 </a> 549 <a href="https://entityframework-plus.net/" target="_blank" rel="nofollow"> 550 Entity Framework Plus 551 </a> 552 <a href="https://dynamic-linq.net/" target="_blank" rel="nofollow"> 553 EF6/EF Core Dynamic LINQ 554 </a> 555 <a href="https://entityframework-classic.net/" target="_blank" rel="nofollow"> 556 Entity Framework Classic 557 </a> 558 <a href="https://bulk-operations.net/" target="_blank" rel="nofollow"> 559 Bulk Operations 560 </a> 561 <a href="https://eval-sql.net/" target="_blank" rel="nofollow"> 562 Eval SQL.NET 563 </a> 564 <a href="https://linqtosql-plus.net/" target="_blank" rel="nofollow"> 565 LinqToSql Plus 566 </a> 567 <a href="https://html-agility-pack.net/" target="_blank" rel="nofollow"> 568 Html Agility Pack 569 </a> 570 <a href="https://entityframework-dynamicfilters.net/" target="_blank" rel="nofollow"> 571 Entity Framework Dynamic Filters 572 </a> 573 </div> 574 <div> 575 <a href="https://www.learnentityframeworkcore.com" target="_blank" rel="nofollow"> 576 Learn EF Core 577 </a> 578 <a href="https://entityframeworkcore.com/" target="_blank" rel="nofollow"> 579 EF Core Tutorial 580 </a> 581 <a href="https://entityframework.net/" target="_blank" rel="nofollow"> 582 EF6 Tutorial 583 </a> 584 <a href="https://www.learndapper.com/" target="_blank" rel="nofollow"> 585 Learn Dapper 586 </a> 587 <a href="https://dappertutorial.net/" target="_blank" rel="nofollow"> 588 Dapper Tutorial 589 </a> 590 <a href="https://nugetmusthaves.com/" target="_blank" rel="nofollow"> 591 NuGet Must Haves 592 </a> 593 <a href="https://csharp-extension.com/" target="_blank" rel="nofollow"> 594 Extension Methods 595 </a> 596 <a href="http://sqlfiddle.com/" target="_blank" rel="nofollow"> 597 SQL Fiddle 598 </a> 599 <a href="https://dotnetfiddle.net/" target="_blank" rel="nofollow"> 600 .NET Fiddle 601 </a> 602 </div> 603 </div> 604 <div class="small-footer-link d-flex align-items-center justify-content-center"> 605 <a href="https://zzzprojects.com/" target="_blank" rel="nofollow">zzzprojects.com</a> 606 <a href="/cookie-policy" class="">Cookie Policy</a> 607 <a href="/privacy-policy" class="">Privacy Policy</a> 608 609 </div> 610 </div> 611 </div> 612 <!-- section-newsletter --> 613 614</footer> 615 616<div id="scroll-to-top"> 617 <i class="fa fa-angle-up" aria-hidden="true"></i> 618</div> 619<div id="site-footer-popup-newsletter" style="width: 18rem; display: none;"> 620 <div class="box"> 621 <div class="box-close"><i class="fas fa-times" onclick="closePopupNewsletter()"></i></div> 622 <div class="box-media"><i class="fas fa-envelope-open-text fa-3x"></i></div> 623 <div class="box-body">Get monthly updates by subscribing to our newsletter!</div> 624 <div class="box-action"><a href="https://mailchi.mp/zzzprojects/newsletter" target="_blank" class="btn-only stroked">SUBSCRIBE!</a></div> 625 </div> 626</div> 627 628 629 630
630<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
630 631
631<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
631 632 633 634 635 636 637 638 639
639<script src="js/_master.js?v=1.0.0.28062"></script>
639 640 641 642 643 644 645
645<script> 646 window.addEventListener("load", function(){ 647 window.cookieconsent.initialise({ 648 "palette": { 649 "popup": { 650 "background": "rgba(0, 0, 0, 0.7)", 651 "text": "#fff" 652 }, 653 "button": { 654 "background": "#000000" 655 } 656 }, 657 "theme": "edgeless" 658 })}); 659 </script>
659 660 661 </body> 662</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.