首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#简单爬取数据(.NET使用HTML解析器NSoup和正则两种方式匹配数据

一、获取数据 想弄一个数据库,由于需要一些人名,所以就去百度一下,然后发现了360图书馆中有很多人名 然后就像去复制一下,发现复制不了,需要登陆 此时f12查看源码是可以复制的,不过就算可以复制想要插入数据也是很麻烦的...三、HTML解析器NSoup 虽然正则表达式也可以匹配,但是如果对正则表达式比较陌生的话,可能就不是友好了。如果有方法可以像用js操作html元素一样,用C#操作html字符串,就非常棒了。...然后我们来使用NSoup获取所有的名字,来试一下就会发现很简单了: 方式一: public static void GetData(String address) { WebClient wc...:使用正则表达式的话,需要对正则表达式有一定的熟悉,然后匹配数据的话也是很方便的,但是修改、添加、删除的话就不是太方便了;使用HTMl解析器(HtmlAgilityPack、NSoup)的话操作起来明显更方便一些...,如果对js有一定的基础,html解析器根本不需要大学习就可以熟练使用,然后对元素进行修改、添加、删除、获取都是非常方便的,不过如果对于未知的html结构就不是太友好了,例如:如果获取页面上所有的http

2K30
您找到你想要的搜索结果了吗?
是的
没有找到

浏览器将标签转成 DOM 的过程

请注意,预解析器不会修改 DOM 树,而是将这项工作交由主解析器处理;预解析器只会解析外部资源(例如外部脚本、样式表和图片)的引用。...该算法相当复杂,无法在此详述,所以我们通过一个简单的示例来帮助大家理解其原理。...HTML 解析中的另一个复杂因素是 JavaScript 可以在解析器执行其工作时添加更多要解析的内容。 标签包含解析器必须收集的文本,然后发送到脚本引擎进行评估。...当脚本引擎解析并评估脚本文本时,解析器会等待。如果JavaScript文件内调用了 document.writeAPI,解析器将重新开始解析过程。...DOMHTML 元素和与 HTML 无关的其他对象提供了额外的功能层。 元素接口 在解析器将元素放入DOM树之前,解析器会根据不同元素的名称赋予元素不同的接口功能。

2.1K00

浏览器是如何将标签转成 DOM

编码 HTTP 响应主体的有效负载可以是从HTML文本到图像数据的任何内容。解析器的第一项工作是找出如何转制刚刚从服务器接收到的 bit。...请注意,预解析器不会修改 DOM 树,而是将这项工作交由主解析器处理;预解析器只会解析外部资源(例如外部脚本、样式表和图片)的引用。...HTML 解析中的另一个复杂因素是 JavaScript 可以在解析器执行其工作时添加更多要解析的内容。 标签包含解析器必须收集的文本,然后发送到脚本引擎进行评估。...当脚本引擎解析并评估脚本文本时,解析器会等待。如果JavaScript文件内调用了 document.writeAPI,解析器将重新开始解析过程。...DOMHTML 元素和与 HTML 无关的其他对象提供了额外的功能层。 元素接口 在解析器将元素放入DOM树之前,解析器会根据不同元素的名称赋予元素不同的接口功能。

1.9K10

渲染树的形成原理你真的很懂吗?

这里其实就是DOM的作用了 页面展示: DOM 是生成页面的基础数据结构 JavaScript 脚本操作: DOM 提供给 JavaScript 脚本操作的接口,JavaScript 可以通过这些接口对...HTML解析器 从后端返回给浏览器渲染引擎 HTML 文件字节流, 第一步要经过的就是渲染引擎中的 HTML 解析器。它实现了将 HTML 字节流转换为 DOM树 结构。...例子1:最简单的不带 CSS 和 JavaScript 的 HTML 代码讲解 HTML 解析器 程序员成长指北 ...阶段三和阶段四 将 Token 解析为 DOM 节点,并将 DOM 节点添加到 DOM 树中 HTML 解析器维护了一个 Token 栈结构(数据结构真是个好东西),这个栈结构的目的就是用来计算节点间的父子关系...此时应该搞懂了核心图中 HTML 解析器的部分,和 DOM 树的基本绘制流程,但是现实很残酷,哪里有这么简单的前端代码,还有有 JavaScript 和 CSS 呢!

90241

浅析XML外部实体注入

> 2、DTD文档类型定义(可选):DTD文档类型定义是一套为了进行程序见的数据交换而建立的关于标记符的语法规则 3、文档元素 XML的构建模块模块组成与HTML类似,由下面几种组成 元素:XML文档的主要构建模块...PCDATA(parsed character data):被解析的字符数据 ps:PCDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。...CDATA(character data):字符数据 ps:CDATA 是不会被解析器解析的文本。 XML的作用 XML 被设计用来传输和存储数据,其焦点是数据的内容,旨在传输信息。...php $xmlfile=file_get_contents('php://input'); $dom=new DOMDocument(); $dom->loadXML($xmlfile, LIBXML_NOENT.../php_xxe/doLogin.php" //参数实体声明中使用到了php的base64编码,这样是为了尽量避免由于文件内容的特殊性,产生xml解析器错误。

1.9K30

XSS跨站脚本攻击

XSS攻击的危害包括: 1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 3、盗窃企业重要的具有商业价值的资料 4、非法转账...简单例子 正常发送消息: http://www.test.com/message.php?send=Hello,World!...、一段攻击型代码】; 将数据存储到数据库中; 其他用户取出数据显示的时候,将会执行这些攻击性代码   3.3、DOMBasedXSS(基于dom的跨站点脚本攻击)   基于DOM的XSS有时也称为type0XSS...当解析器到达javascript代码,它会执行它并且修改你的HTML页面。...【这段出自:http://www.oschina.net/translate/dom-based-xss-of-third-kind】 4、XSS攻击实例分析   例1、简单XSS攻击 留言类,简单注入

1.5K30

浏览器渲染(线程视角1)

DOM就是对html文档结构的一个表述 image.png DOMDOM是生成页面的基本数据结构 DOM提供改变文档、样式、内容的接口 DOM是一道安全防线,在解析过程中如果有不安全的内容会被拒绝...HTML解析器 html文档要经过htmlpaser处理转换成最终的dom树,HTML解析器并不是等待整个文档加载完成之后在解析结构,而是从网络进程和渲染进程建立的数据管道不断的读取解析。...token将标签和文本划分为 tagToken ,textToken ,tagToken又分为startToken,endToken 一个简单的例子: <div...,将startTag Token从栈顶弹出,解析完成一个标签 JS脚本阻塞DOM生成 上文已经介绍html解析器是按照顺序进行分词解析标签,当遇到js文件、js内嵌脚本时会阻塞DOM 当遇到js文件时...html解析器解析到内联脚本,暂停dom解析,js引擎执行脚本,修改已生成的dom结构、内容,脚本执行结束,html解析器恢复继续执行 css样式优先下载解析 js引擎在解析执行脚本之前,并不知道是否有操作

2.3K140

渲染树的形成原理你真的很懂吗?

这里其实就是DOM的作用了 页面展示: DOM 是生成页面的基础数据结构 JavaScript 脚本操作: DOM 提供给 JavaScript 脚本操作的接口,JavaScript 可以通过这些接口对...HTML解析器 从后端返回给浏览器渲染引擎 HTML 文件字节流, 第一步要经过的就是渲染引擎中的 HTML 解析器。它实现了将 HTML 字节流转换为 DOM树 结构。...例子1:最简单的不带 CSS 和 JavaScript 的 HTML 代码讲解 HTML 解析器 程序员成长指北 根据这段代码具体分析...阶段三和阶段四 将 Token 解析为 DOM 节点,并将 DOM 节点添加到 DOM 树中 HTML 解析器维护了一个 Token 栈结构(数据结构真是个好东西),这个栈结构的目的就是用来计算节点间的父子关系...此时应该搞懂了核心图中 HTML 解析器的部分,和 DOM 树的基本绘制流程,但是现实很残酷,哪里有这么简单的前端代码,还有有 JavaScript 和 CSS 呢!

93851

浏览器解析与编码顺序及xss挖掘绕过全汇总

主要分为两个过程: 1、 浏览器接收到响应数据后,解析器先对HTML之类的文档进行解析,构建成DOM节点树,同时,CSS会被CSS解析器解析生成样式表。...但使用defer属性也可以让浏览器在DOM加载完成后,再执行指定脚本。...p>Content 通过解析器的解析后生成DOM树: 如果在这个时候,如果修改一下,比如说把Main Title用html编码成: <h...由此可以明白HTML解码的时机:它是在浏览器构建完DOM树以后才进行解码的,当解析器对前者进行解析时,无法识别为html标签,所以构建不了DOM节点,后者在顺利构建完DOM树之后对节点内容进行解码。...可以对各个部分进行测试,是否可以使用实体替换以及执行效果如何: 3.3 Js解码: Js解码就简单很多,js的脚本处理模型是按照源码处理-函数解析-代码执行这个执行流来的,不管是外部引用还是直接写在script

4.7K32

JavaScript---网络编程(5)-自定义对象Json、Dom模型概念讲解

DOM 定义了访问 HTML 和 XML 文档的标准: “W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”...换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。 在这里,我们学的是HTML-DOM。 什么是 JSON ? JSON 比 XML 更小、更快,更易解析。...JSON 具有自我描述性,更易理解 * JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。...由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。...DHTML技术: 动态的HTML —-html + css + dom +javascript 配合使用,来做动态html页面 HTML—负责提供标签,同时用标签封装数据 CSS—-负责显示样式

79110

前端优化--使用JavaScript添加交互

为进行说明,让我们用一个简单的内联脚本对之前的“Hello World”示例进行扩展: <meta name="viewport" content="width=...尽管这种方法可行,但是在实践中,使用 <em>HTML</em> 和 CSS 要<em>简单</em>得多。...当 <em>HTML</em> <em>解析器</em>遇到一个 script 标记时,它会暂停构建 <em>DOM</em>,将控制权移交给 JavaScript 引擎;等 JavaScript 引擎运行完毕,浏览器会从中断的地方恢复 <em>DOM</em> 构建。...如果浏览器尚未完成 CSSOM 的下载和构建,而我们却想在此时运行<em>脚本</em>,会怎样?答案很<em>简单</em>,对性能不利:浏览器将延迟<em>脚本</em>执行和 <em>DOM</em> 构建,直至其完成 CSSOM 的下载和构建。...<em>解析器</em>阻止与异步 JavaScript 默认情况下,JavaScript 执行会“阻止<em>解析器</em>”:当浏览器遇到文档中的<em>脚本</em>时,它必须暂停 <em>DOM</em> 构建,将控制权移交给 JavaScript 运行时,让<em>脚本</em>执行完毕

1.8K20

前端优化--使用JavaScript添加交互

为进行说明,让我们用一个简单的内联脚本对之前的“Hello World”示例进行扩展: <!...尽管这种方法可行,但是在实践中,使用 HTML 和 CSS 要简单得多。...当 HTML 解析器遇到一个 script 标记时,它会暂停构建 DOM,将控制权移交给 JavaScript 引擎;等 JavaScript 引擎运行完毕,浏览器会从中断的地方恢复 DOM 构建。...如果浏览器尚未完成 CSSOM 的下载和构建,而我们却想在此时运行脚本,会怎样?答案很简单,对性能不利:浏览器将延迟脚本执行和 DOM 构建,直至其完成 CSSOM 的下载和构建。...解析器阻止与异步 JavaScript 默认情况下,JavaScript 执行会“阻止解析器”:当浏览器遇到文档中的脚本时,它必须暂停 DOM 构建,将控制权移交给 JavaScript 运行时,让脚本执行完毕

1.8K21

干货 | 学习XSS从入门到熟悉

客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。...简单的说就是,浏览器对HTML解码之后就开始解析HTML文档,将众多标签转化为内容树中的DOM节点,此时识别标签的时候,HTML解析器是无法识别那些被实体编码的内容的,只有建立起DOM树,才能对每个节点的内容进行识别...所以在PHP中,使用htmlspecialchars()函数把预定义的字符转换为HTML实体,只有等到DOM树建立起来后,才会解析HTML实体,起到了XSS防护作用。...解析器还会进行解码操作,最后解析的脚本将被执行。...解析器处于“数据状态”,不会转换到“标签开始状态”,所以就不会建立新的标签。

3.5K11

画了20张图,详解浏览器渲染引擎工作原理

我们将一个处理流程称为渲染流水线,其大致流程如下图所示: 这里主要包含五个过程: 「DOM树构建」:渲染引擎使用HTML解析器(调用XML解析器)解析HTML文档,将各个HTML元素逐个转化成DOM节点...在渲染引擎中,DOM 有三个层面的作用: 从页面的视角来看,DOM 是生成页面的基础数据结构; 从 JavaScript 脚本视角来看,DOM 提供给 JavaScript 脚本操作的接口,通过这套接口...当解析器解析HTML时,如果遇到了script标签,判断这是脚本,就会暂停 DOM 的解析,因为接下来的 JavaScript 脚本可能会修改当前已经生成的 DOM 结构。...由于这段脚本修改了第一个div的内容,所以执行完这个脚本之后,div中的文本就变成了“juejin yyds”,当脚本执行完成之后,HTML解析器就会恢复解析过程,继续解析后面的内容,直至生成最终的DOM...,在接收到 HTML 数据之后的预解析过程中,HTML解析器识别出来了有 CSS 文件和 JavaScript 文件需要下载,就会同时发起两个文件的下载请求。

1.7K20

一文了解XSS漏洞和常见payload

删除目标文章、恶意篡改数据、嫁祸。 劫持用户Web行为,甚至进一步渗透内网。 爆发Web2.0蠕虫。 蠕虫式的DDoS攻击。...蠕虫式挂马攻击、刷广告、刷浏量、破坏网上数据 2、XSS的分类 XSS主要有三类: 反射型XSS(非持久型) 存储型XSS(持久型) DOM XSS 反射型XSS 反射型XSS 是非持久性、参数型的跨站脚本...Mavo [self.alert(1)] 6、各种绕过 圆括号过滤 利用HTML解析器和JS语句: <svg onload=alert&lpar...–是多行注释,所以换行的思路基本不可行 绕过方法 因为HTML中没有嵌套注释的概念,所以可以用新的注释打破了旧的注释 而因为浏览器不喜欢在意外发送时呈现php源代码,所以它会变异成<!...HTML Entity编码 可以用PHP中的htmlspecialchars()、htmlentities() 2.解码: 避免直接对HTML Entity编码 使用DOM Parse转码,校正不配对的

2.4K20

PHP版的jQuery

如果这个任务放到浏览器端执行,太简单了,只需要一句代码:jQuery('.title').each(...);,如何能在服务器端也能像jQuery那样进行HTML DOM查询呢?...但比起其它几个类似功能程序库,例如Zend_Dom、QueryPath、SimpleHtmlDom,它算是好的。 phpQuery的接口很丰富,但很简单。...官方扩展库中的DOM对象,也就是说,phpQuery是一个基于PHP原生的DOM对象的HTML/XML解析器,这样做的好处是,效率很高。...相反,像SimpleHtmlDom这样也是分析HTML/XML的程序库,但没有基于PHP原生DOM对象,当分析大数据量时,很容易产生性能问题,所以不推荐使用。...首先PHP中的中文本身就是个问题,而PHPDOM对 象处理中文的方式也是有争议的。

1.3K30

浏览器底层工作那些事儿

html 文档格式是 DTD,它是一个上下文无关的文档格式。它更加宽容,可以省略一些标记,因此解析器处理起来会很复杂。 dom 树是由 dom 元素和属性构成的树形结构。...其中 domhtml 中的标记是对应的。..."/> html 结构不能采用常规的自顶向下或者自底向上的解析器进行解析,因此它需要采用自定义的解析器进行解析,通过标记法和树构造进行解析...在创建解析器的时候,会创建文档对象,在解析树构造的时候,会向 dom 树添加元素。 标记法标记的节点会由解析树的构造函数进行处理。当元素被添加到 dom 树的时候,也会被添加到堆栈中。...在解析 dom 树的时候,js 引擎也会解析 js 脚本dom 解析后,这些脚本会执行。 解析树是具有包容性的,当遇到一些错误的时候,它只会内部进行标记,并不会报错给用户。

41320
领券