我正在尝试创建一些xpath,它将找到所有a不包含img标签的标签,以便像这样的东西
<a href="http://aol.com">link</a>
Run Code Online (Sandbox Code Playgroud)
比赛,但是
<a href="http://yahoo.com"><img src="http://yahoo.com/logo.png"></a>
Run Code Online (Sandbox Code Playgroud)
才不是.
当然,我可以通过两部分搜索来完成此操作,但我确信必须有一些方法可以使用xpath执行此操作.
我正在尝试创建一个删除不在白名单中的html标签和属性的函数.我有以下HTML:
<b>first text </b>
<b>second text here
<a>some text here</a>
<a>some text here</a>
</b>
<a>some twxt here</a>
Run Code Online (Sandbox Code Playgroud)
我正在使用HTML敏捷包,到目前为止我的代码是:
static List<string> WhiteNodeList = new List<string> { "b" };
static List<string> WhiteAttrList = new List<string> { };
static HtmlNode htmlNode;
public static void RemoveNotInWhiteList(out string _output, HtmlNode pNode, List<string> pWhiteList, List<string> attrWhiteList)
{
// remove all attributes not on white list
foreach (var item in pNode.ChildNodes)
{
item.Attributes.Where(u => attrWhiteList.Contains(u.Name) == false).ToList().ForEach(u => RemoveAttribute(u));
}
// remove all html and their innerText …Run Code Online (Sandbox Code Playgroud) 在Firefox中,有一个名为"Html Validator"的扩展.它会在窗口的右下角添加一个小指示符图标.当您访问的页面无效时,它会亮起.您可以单击它以查看错误.这个扩展的真正重要特征是它不与w3c的验证器建立连接.w3c使用的相同验证SGML解析器是捆绑的.这意味着它可以验证本地HTML文件.(这对我来说是最重要的用途,因为我使用手动编码的html文件进行Web开发.每次我在浏览器中预览HTML时,我也可以知道它是否有验证错误.)
谷歌Chrome,Opera,Safari甚至IE都有类似的东西吗?当我查看过去几年时,我见过的所有其他验证器只是将当前的URL发送到w3c的验证器站点.
我有一个使用rails构建的个人博客.我想在我的网站上添加一个部分,显示我目前的github贡献.这样做最好的方法是什么?
编辑:澄清,这是我想要的:
只需要天数就可以了.
如果我不能使用BeautifulSoup或lxml,解析HTML的最佳选择是什么?我有一些使用SGMLlib的代码,但它有点低级,现在已经弃用了.
我更喜欢它可能会造成一些格式错误的HTML,尽管我很确定大部分输入都会非常干净.
我想用另一个文本替换HTML标签的内部文本.我正在使用HtmlAgilityPack
我使用此代码来提取所有文本
HtmlDocument doc = new HtmlDocument();
doc.Load("some path")
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[normalize-space(.) != '']")) {
// How to replace node.InnerText with some text ?
}
Run Code Online (Sandbox Code Playgroud)
但是InnerText是只读的.如何用其他文本替换文本并将其保存到文件?
我目前正在尝试(或计划尝试)编写一个简单的(尽可能)程序来将html文档解析为树.
谷歌搜索后,我发现许多答案说"不要做它已经完成"(或者说是这样的话); 和HTML解析器示例的引用; 还有一篇相当有说服力的文章,说明为什么不应该使用常规表达.但是我没有找到任何关于编写解析器的"正确"方法的指南.(顺便说一句,这是我尝试更多的东西,而不是任何东西,所以我非常喜欢这样做,而不是使用预制的)
我相信我只需通过阅读文档并将标签/文本等添加到树中就可以创建一个有效的XML解析器,每当我点击一个关闭标签时就会升级一个级别(同样,简单,没有花哨的线程或在这个阶段需要效率).但是,对于HTML,并非所有标记都已关闭.
所以我的问题是:你会建议什么作为处理这个问题的方法?我唯一的想法就是以与XML类似的方式对待它,但是有一个标签列表,这些标签不一定都是关闭的条件(例如<p>结束于</ p>或下一个<p >标签).
有没有其他任何(希望更好)的建议?是否有更好的方法完成这项工作?
我刚刚开始阅读有关DOM的文档和示例,以便抓取和解析文档.
例如,我有部分文件如下所示:
<div id="showContent">
<table>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
<td width="10"> </td>
<td valign="top"><table cellspacing="0" cellpadding="0" border="0">
<tbody><tr>
<td height="30"><a class="px11" href="link">title</a><a><br>
<span class="px10"></span>
</a></td>
</tr>
<tr>
<td><img height="1" width="580" src="crap"></td>
</tr>
<tr>
<td align="right">
<a href="link"><img height="16" border="0" width="65" src="/buy"></a>
</td>
</tr>
<tr>
<td valign="top" class="px10">
<p style="width: 500px;">description.</p>
</td>
</tr>
</tbody></table></td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
<tr>
<td>
Crap
</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用以下代码来获取所有tr标记并分析其中是否存在垃圾或信息:
$dom …Run Code Online (Sandbox Code Playgroud) 刚尝试首次使用HtmlAgility Pack并遇到问题.
首先我从字符串变量加载.
string NewsText = dr["Message"].ToString();
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(NewsText);
//doing my stuff...
Run Code Online (Sandbox Code Playgroud)
然后我想将我的更改保存在字符串NewsText中.我怎么做?htmlDoc.toString()没有用.
谢谢!
我正在学习谷歌的Go编程语言.有没有人知道从html网页中提取所有URL的最佳做法?
来自Java世界,有工作的库,例如jsoup,htmlparser等.但是对于go lang,我想没有可用的类似库吗?
html-parsing ×10
c# ×3
html ×3
parsing ×3
xml-parsing ×2
domdocument ×1
github ×1
go ×1
php ×1
python ×1
ruby ×1
sanitize ×1
tags ×1
xpath ×1