首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >寻找强大的文本处理工具

寻找强大的文本处理工具
EN

Software Recommendation用户
提问于 2014-07-21 05:39:01
回答 3查看 128关注 0票数 4

我需要从巨大的HTML中提取一些文本模式。

我绝对可以用与我所需要的完全匹配的组编写一个精确的正则表达式。

什么样的工具适合提取这些群体,并把他们的名单还给我?

基本上,我正在寻找一个强大的工具,它允许您使用正则表达式处理文本/搜索/查找/替换/提取。我猜想这个工具也可能有不同的有用功能,如排序/唯一等等。

我知道有不同的linux工具可以用于这个目的,但我不知道它们的任何组合可以让我轻松地完成我需要的事情。

下面是这个问题的例子:

我有一个HTML源代码,上面有很多不同的链接。我需要从这些链接中提取所有的URL,但不是页面上的所有URL。我需要解析这些URL并进一步处理它们。

假设URL如下:http://example.com/sub/www354

我需要提取www354并将其添加到某些模式中,例如:

myownstring/id/www354

我希望能就做这件事的最佳工具/工具提出任何建议。

EN

回答 3

Software Recommendation用户

回答已采纳

发布于 2014-07-21 21:14:19

我建议看看Python刮痕

Python及其标准库包含了许多非常强大的文本处理工具,包括正则表达式,但是scrapy更进一步。

来自网站:

  • 内置支持从HTML和XML源选择和提取数据。
  • 内置支持使用可重用过滤器(称为项目加载器)集合来清理和消毒所有蜘蛛之间共享的刮取的数据。
  • 内置支持生成多种格式的提要导出(JSON、CSV、XML)并将它们存储在多个后端(FTP、S3、本地文件系统)

两者都是免费的,跨平台,您可以交互测试代码,这节省了很多时间。

票数 2
EN

Software Recommendation用户

发布于 2014-07-23 11:40:39

我推荐JSoup

它是基于Java的框架。

“选举人”机制来查找和操作html元素。

票数 0
EN

Software Recommendation用户

发布于 2015-11-10 08:48:51

如果您知道C#,您可以在HtmlAgilityPack的帮助下处理NuGet,这是一个NuGet包。

它使用类似XPath的选择器,您可能已经从XML处理中熟悉了这些选择器。下面是一个我用来从网站中提取产品图像、名称和价格的例子。用它真的很直接。

代码语言:javascript
复制
using System;
using System.Net;
using System.Text;
using HtmlAgilityPack;

namespace HtmlExtract
{
    class Program
    {
        static void Main(string[] args)
        {
            var doc = new HtmlDocument();
            using (var client = new WebClient())
            {
                doc.Load(client.OpenRead(args[0]), Encoding.UTF8);
            }

            var products = doc.DocumentNode.SelectNodes("//div[@class=\"product-teaser\"]");
            foreach (var product in products)
            {
                var image = product.SelectSingleNode(".//img");
                Console.WriteLine("Image URL: {0}", image.GetAttributeValue("src",""));

                var title = product.SelectSingleNode(".//h2/a");
                Console.WriteLine("Title    : {0}", title.InnerText);

                var price = product.SelectSingleNode(".//span[@class=\"regular-price\"]/span[@class=\"price\"]");
                Console.WriteLine("Price    : {0}", price.InnerText);

                Console.WriteLine();
            }
        }
    }
}

关于您的一些具体要求:

文本/搜索/查找/替换/提取.

查找HTML是通过XPaths完成的,参见上面的示例。这意味着您指定元素名称和属性名称(也是组合的)并返回节点。在该节点上,可以执行其他操作,例如字符串操作。

使用正则表达式

好的,我们不应该使用Regex解析HTML,但是在您用HtmlAgilityPack解析了HTML之后,您可以使用C# Regex类解析其余的内容。

我猜想这个工具也可能有不同的有用功能,如排序/唯一等等。

当然,例如与排序类

上面有很多不同的链接

上面的示例从<img src="...">中提取链接。当然,您也可以以类似的方式从<a href="...">中提取链接。在这样做之后,您仍然可以决定其他需求,比如if (link.StartsWith("http://www354.") { ... }

票数 0
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/9973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档