早上好!我正在使用c#(框架3.5sp1),并希望通过正则表达式解析以下html片段:
<h1>My caption</h1>
<p>Here will be some text</p>
<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>
<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>
<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>
Run Code Online (Sandbox Code Playgroud)
我需要以下输出:
我有什么atm:
<hr.*?/>
<h2.*?>(.*?)</h2>
([\W\S]*?)
<hr.*?/>
Run Code Online (Sandbox Code Playgroud)
由于尾随,这将给我每个奇怪的子标题+内容(例如,1,3,...)<hr/>.为了解析h1-caption我有另一个模式(<h1.*?>(.*?)</h1>),它只给我标题而不是内容 - 我对那个atm很好.
有没有人为我提供提示/解决方案或任何替代逻辑(例如通过阅读器解析html并以这种方式分配?)?
编辑:
正如一些HTMLAgilityPack带来的,我很好奇这个漂亮的工具.我完成了<h1>-tag的内容.
但是...我的问题是解析其余部分.这是由于:内容的标签可能会有所不同 - 从<p>to <div>和<ul>... atm这似乎或多或少地遍历整个文档并解析标签标签......?任何提示?
我想知道是否可以在不使用WebBrowser类的情况下打开HTML文档来编辑元素和属性; 我知道如何使用HTML中的函数来执行此操作,但不幸的是,我需要将编辑作为另一个程序(solidworks Enterprise PDM)的加载项的一部分进行,该程序仅允许使用C#和.NET 3.5.
我在考虑使用类似的东西:
FileStream UpdateHTML = new FileStream(filepath, FileMode.Open, FileAccess.Write);
Run Code Online (Sandbox Code Playgroud)
提供对html文档的写访问权限,但我不确定这是否是正确的路径.
我使用以下正则表达式来获取HTML文档中src第一个img标记的值.
string match = "src=(?:\"|\')?(?<imgSrc>[^>]*[^/].(?:jpg|png))(?:\"|\')?"
Run Code Online (Sandbox Code Playgroud)
现在它捕获src了我不需要的总属性.我只需要src属性中的url .怎么做?
伙计们,我正在尝试使用C#从网页中提取数据..目前我使用了WebReponse中的Stream,并将其解析为一个大字符串.这是漫长而痛苦的.有人知道从网页中提取数据的更好方法吗?我说WINHTTP但不适合c#..
有很多用于python,php的开源屏幕抓取库.但是我找不到任何.Net对应物.你能推荐任何用于屏幕抓取的库或只是html解析,这会让生活更轻松.
我想捕获名为'STRONG'的所有标签我可以使用<STRONG.*?</STRONG>这工作得很好但我不想捕获这些标签如果'SPAN'标签进来这些标签我想要这样的东西<STRONG.*(^(SPAN)).*?</STRONG>
是示例文本
<STRONG> For technical <SPAN id=PageBreak>101</SPAN> please</STRONG>
<SPAN id=PageBreak type="4">56</SPAN><STRONG> visit</STRONG>
Run Code Online (Sandbox Code Playgroud)
我想捕获第二个强标记,而不是第一个
可能重复:
寻找C#HTML解析器
我做了一些谷歌搜索,并获得了一些点击,但我想知道是否有任何特定的现有代码库从人群中脱颖而出.非常感谢.