我正在寻找一个库/方法来解析一个html文件,该文件具有比通用xml解析库更多的html特定功能.
我想知道是否有一个类似jQuery的css选择器可以在C#中使用.
目前,我正在使用正则表达式解析一些html字符串,并认为在jQuery中使用类似css选择器的东西会更好,以匹配我想要的元素.
Html Agility Pack是前一段时间给出StackOverflow问题的答案,它仍然是最好的选择吗?还应该考虑哪些其他选择?有更轻量级的东西吗?
我需要一个强大的Web scraper库来从web挖掘内容.可以支付或免费两者对我来说都没问题.请建议我使用库或更好的方法来挖掘数据并存储在我的首选数据库中.我搜索过,但我没有找到任何好的解决方案.我需要专家的好建议.请帮帮我.
我需要从c#中的样式表内联css.
就像这是如何工作的.
http://www.mailchimp.com/labs/inlinecss.php
css很简单,只是类,没有花哨的选择器.
我使用的是正则表达式考虑(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})+剥离从CSS规则,然后尝试做简单的字符串替换所在班被称为,但一些HTML元素已经有一个风格的标签,所以我必须说明,作为好.
有更简单的方法吗?或者已经用c#写的东西?
如果您的html也是有效的xml,我已经能够提出一个简单的CSS内联器.它使用正则表达式来获取<style />元素中的所有样式.然后将css选择器转换为xpath表达式,并在任何预先存在的内联样式之前将样式内联添加到匹配元素.
注意,CssToXpath没有完全实现,有些东西它不能做......但是.
CssInliner.cs
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Xml.Linq;
using System.Xml.XPath;
namespace CssInliner
{
public class CssInliner
{
private static Regex _matchStyles = new Regex("\\s*(?<rule>(?<selector>[^{}]+){(?<style>[^{}]+)})",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
public List<Match> Styles { get; private set; }
public string InlinedXhtml { get; private set; }
private XElement XhtmlDocument { get; set; }
public CssInliner(string xhtml)
{
XhtmlDocument = ParseXhtml(xhtml);
Styles = GetStyleMatches(); …Run Code Online (Sandbox Code Playgroud) 我有一个C#WPF应用程序需要使用作为HTML表格在网页上公开的数据.
从这个url获得灵感后,我尝试使用Linq to Xml来解析Html文档,但这只适用于HTML文档形式非常好(并且其中没有任何注释或HTML实体).我已经设法使用这种技术获得了一个有效的解决方案,但它远非理想.
我正在寻找用于解析HTML的解决方案.我之前曾经破解过"解决方案",但它们很脆弱.我正在寻找一种解析/操作文档的强大方法.理想情况下,我喜欢让任务变得像Javascript/JQuery一样简单的东西.
有谁知道一个好的.Net库或实用程序来解析/操作HTML?
我已经将整个网页的html保存为字符串,现在我想从链接中获取"href"值,最好能够将它们保存到不同的字符串中.最好的方法是什么?
我已经尝试将字符串保存为.xml文档并使用XPathDocument导航器解析它,但是(惊喜)它并没有很好地导航非真正的xml文档.
正则表达式是实现我想要实现的目标的最佳方式吗?
我正在开发一个webcrawler.目前我刮掉整个内容然后使用正则表达式我删除<meta>, <script>, <style>和其他标签,并获取身体的内容.
但是,我正在尝试优化性能,我想知道是否有一种方法可以只刮掉<body>页面的内容?
namespace WebScrapper
{
public static class KrioScraper
{
public static string scrapeIt(string siteToScrape)
{
string HTML = getHTML(siteToScrape);
string text = stripCode(HTML);
return text;
}
public static string getHTML(string siteToScrape)
{
string response = "";
HttpWebResponse objResponse;
HttpWebRequest objRequest =
(HttpWebRequest) WebRequest.Create(siteToScrape);
objRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; " +
"Windows NT 5.1; .NET CLR 1.0.3705)";
objResponse = (HttpWebResponse) objRequest.GetResponse();
using (StreamReader sr =
new StreamReader(objResponse.GetResponseStream()))
{
response = sr.ReadToEnd();
sr.Close();
} …Run Code Online (Sandbox Code Playgroud) 我必须解析一系列网页才能将数据导入应用程序.每种类型的网页都提供相同类型的数据.问题是每个页面的HTML不同,因此数据的位置会有所不同.另一个问题是HTML代码格式不正确,因此无法使用类似XML的解析器.
到目前为止,我能想到的最好的策略是为每种页面定义一个模板,例如:
模板A:
<html>
...
<tr><td>Table column that is missing a td
<td> Another table column</td></tr>
<tr><td>$data_item_1$</td>
...
</html>
Run Code Online (Sandbox Code Playgroud)
模板B:
<html>
...
<ul><li>Yet another poorly formatted page <li>$data_item_1$</td></tr>
...
</html>
Run Code Online (Sandbox Code Playgroud)
这样,我只需要对所有的页面一个单独的语法分析器,将每一页,其模板和检索比较$data_item_1$,$data_item_2$等等.不过,这将是大量的工作.你能想到更简单的解决方案吗?任何可以帮助的图书馆?
谢谢
我有一个接收html文件的C#应用程序.我想解析并验证它.在输出时,它将返回错误列表或我的HTML有效.
有谁知道我怎么能这样做?
c# ×9
.net ×5
html ×5
parsing ×4
css ×2
web-scraping ×2
html-parsing ×1
inlining ×1
jquery ×1
linq ×1
text ×1
validation ×1
web-crawler ×1
xml ×1