HTML抓取的选项?[关闭]

我正在考虑尝试Beautiful Soup,一个用于HTML抓取的Python包。还有其他我应该查看的HTML抓包工具吗?Python不是必需的,我实际上也对其他语言感兴趣。

到目前为止的故事:

猿Sam2020/03/23 10:19:32

我喜欢Google Spreadsheets的ImportXML(URL,XPath)函数。

如果您的XPath表达式返回多个值,它将在列下重复单元格。

importxml()一个电子表格上最多可以包含50个功能。

RapidMiner的Web插件也非常易于使用。它可以发布帖子,接受cookie并可以设置user-agent

猴子2020/03/23 10:19:32

使用Aptana的Jaxer + jQuery解析页面也取得了很大的成功。它本质上不像“脚本”那样快或类似,但是jQuery选择器+真正的JavaScript / DOM是更复杂(或格式错误)页面上的救命稻草。

卡卡西2020/03/23 10:19:32

我使用SgmlReader在.NET中混合了不同的结果,它最初是由Chris Lovett启动的,并且似乎已经由MindTouch更新了

米亚小胖2020/03/23 10:19:32

好吧,如果您希望仅使用浏览器从客户端完成此操作,则可以使用jcrawl.com从Web应用程序(http://www.jcrawl.com/app.html设计了抓取服务后,只需要将生成的脚本添加到HTML页面即可开始使用/呈现数据。

所有抓取逻辑都是通过JavaScript在浏览器上发生的。希望对你有帮助。单击此链接以获取从Yahoo网球中提取最新新闻的实时示例

Tony凯2020/03/23 10:19:32

的的实现HTML5解析算法html5lib(Python和Ruby),Validator.nu HTML解析器(Java,JavaScript的,C ++开发中),众声喧哗中(C),Twintsam(C#;即将到来的)。

JinJin阿飞2020/03/23 10:19:32

尽管它是为.NET Web测试而设计的,但我一直为此目的使用WatiN框架。由于它是基于DOM的,因此捕获HTML,文本或图像非常容易。最近,我用它将MediaWiki所有页面名称空间查询中的链接列表转储到Excel电子表格中。下面的VB.NET代码片段非常粗糙,但是可以正常工作。


Sub GetLinks(ByVal PagesIE As IE, ByVal MyWorkSheet As Excel.Worksheet)

    Dim PagesLink As Link
    For Each PagesLink In PagesIE.TableBodies(2).Links
        With MyWorkSheet
            .Cells(XLRowCounterInt, 1) = PagesLink.Text
            .Cells(XLRowCounterInt, 2) = PagesLink.Url
        End With
        XLRowCounterInt = XLRowCounterInt + 1
    Next
End Sub
猿神乐2020/03/23 10:19:32

如果不使用Perl,您将是个傻瓜。

加固以下模块,然后将人参刮伤。

use LWP
use HTML::TableExtract
use HTML::TreeBuilder
use HTML::Form
use Data::Dumper
LGil2020/03/23 10:19:32

在Java中,您可以使用TagSoup

西里西门2020/03/23 10:19:32

我在Python上经常使用Beautiful Soup。它比正则表达式检查要好得多,因为即使HTML格式不正确,它也可以像使用DOM一样工作您可以使用比正则表达式更简单的语法快速找到HTML标签和文本。一旦找到一个元素,就可以遍历该元素及其子元素,这对于理解代码中的内容比使用正则表达式更有用。我希望“美丽的汤”存在于多年前,当时我不得不进行大量的屏幕抓图工作-因为HTML结构在人们开始对其进行验证之前太差了,这将为我节省很多时间和头痛。

小宇宙2020/03/23 10:19:32

也有此解决方案:netty HttpClient

伽罗2020/03/23 10:19:32

.NET的另一个工具是MhtBuilder

小胖Gil2020/03/23 10:19:32

在Java中使用HtmlUnit取得了一些成功这是一个用于在Web UI上编写单元测试的简单框架,但对HTML抓取同样有用。

Mandy村村2020/03/23 10:19:32

Perl的另一个选择是基于Ruby的Scrapi的Web :: Scraper简而言之,使用简洁明了的语法,您可以将健壮的抓取工具直接放入数据结构中。

Near达蒙2020/03/23 10:19:31

我首先要确定所涉及的站点是否提供API服务器或RSS Feed,以访问所需的数据。

飞云Tom2020/03/23 10:19:31

我知道并喜欢Screen-Scraper

屏幕抓取工具是一种用于从网站提取数据的工具。屏幕抓取工具可自动执行以下操作:

* Clicking links on websites
* Entering data into forms and submitting
* Iterating through search result pages
* Downloading files (PDF, MS Word, images, etc.)

常见用途:

* Download all products, records from a website
* Build a shopping comparison site
* Perform market research
* Integrate or migrate data

技术:

* Graphical interface--easy automation
* Cross platform (Linux, Mac, Windows, etc.)
* Integrates with most programming languages (Java, PHP, .NET, ASP, Ruby, etc.)
* Runs on workstations or servers

三种版本的屏幕抓取器:

* Enterprise: The most feature-rich edition of screen-scraper. All capabilities are enabled.
* Professional: Designed to be capable of handling most common scraping projects.
* Basic: Works great for simple projects, but not nearly as many features as its two older brothers.
古一2020/03/23 10:19:31

为什么没有人提到Java的JSOUP?http://jsoup.org/

老丝阿飞2020/03/23 10:19:31

对于PHP,“简单HTML DOM分析器”是一个不错的选择,如果您熟悉jQuery或JavaScript选择器,那么您会发现自己很熟悉。

在这里找到

这里也有关于它的博客文章。

伽罗2020/03/23 10:19:31

来自Django的 Adrian Holovaty templatemaker实用程序使用了一种非常有趣的方法:向其提供同一页面的变体,并“学习”变量数据的“漏洞”所在的位置。它不是特定于HTML的,因此也适用于抓取其他任何纯文本内容。我还将它用于转换为纯文本的PDF和HTML(分别使用pdftotext和lynx)。

阿飞神无2020/03/23 10:19:31

Python除了Beatiful Soup之外,还有多种HTML抓取选项。以下是一些其他内容:

  • 机械化:类似于perl WWW:Mechanize为您提供类似浏览器的对象以与网页保持一致
  • lxml:Python绑定到libwww支持遍历和选择元素的各种选项(例如XPath和CSS选择)
  • scrapemark:高级库,使用模板从HTML提取信息。
  • pyquery:允许您对XML文档进行类似jQuery的查询。
  • scrapy:一个高级的抓取和Web爬网框架。它可以用来编写蜘蛛,用于数据挖掘以及监视和自动测试
Itachi2020/03/23 10:19:31

BeautifulSoup是HTML抓取的好方法。我以前的工作是让我做很多工作,但我希望我一开始就了解BeautifulSoup。就像具有更多有用选项的DOM和pythonic一样。如果您想尝试使用Ruby,他们会移植BeautifulSoup并将其命名为RubyfulSoup,但是它已经有一段时间没有更新了。

其他有用的工具是HTMLParser或sgmllib.SGMLParser,它们是标准Python库的一部分。每次您输入/退出标签并遇到html文本时,这些方法就会通过调用方法来工作。如果您熟悉的话,他们就像Expat。如果要解析非常大的文件,并且创建DOM树将很长且昂贵,则这些库特别有用。

正则表达式不是非常必要。BeautifulSoup处理正则表达式,因此,如果您需要它们的功能,则可以在那里使用它。我说与BeautifulSoup一起使用,除非您需要速度和较小的内存占用。如果您在Python上找到了更好的HTML解析器,请告诉我。

2020/03/23 10:19:31

Python lxml库充当libxml2和libxslt库的Pythonic绑定。我特别喜欢它的XPath支持和内存XML结构的精美打印。它还支持解析损坏的HTML。而且我认为您找不到其他比lxml解析XML更快的Python库/绑定。

2020/03/23 10:19:31

在.NET世界中,我建议使用HTML Agility Pack。虽然不如上述某些选项(例如HTMLSQL)那么简单,但它非常灵活。它使您可以处理格式不正确的HTML,就像处理格式正确的XML一样,因此您可以使用XPATH或仅在节点上进行迭代。

http://www.codeplex.com/htmlagilitypack

神乐2020/03/23 10:19:31

在Ruby世界中,相当于Beautiful Soup的是why_the_lucky_stiff的Hpricot

宝儿理查德2020/03/23 10:19:31

对于Perl,有WWW :: Mechanize。