Volby pro HTML škrábání?

hlasů
378

Přemýšlím, že se snaží Krásná polévka , balíček jazyka Python pro HTML škrábání. Existují nějaké další HTML škrábání balíčky bych měl při pohledu na? Python není podmínkou, já jsem ve skutečnosti zájem o jednání o jiných jazycích.

Příběh tak daleko:

Položena 05/08/2008 v 22:09
zdroj uživatelem
V jiných jazycích...                            


40 odpovědí

hlasů
54

Ruby světový ekvivalent Krásná polévka je why_the_lucky_stiff je Hpricot .

Odpovězeno 05/08/2008 v 22:13
zdroj uživatelem

hlasů
39

.NET světě, doporučuji HTML Agility Pack. Není zdaleka tak jednoduché, jak někteří z výše uvedených možností (jako HTMLSQL), ale je to velmi flexibilní. To vám umožní maniuplate špatně vytvořený HTML, jako kdyby to byly dobře tvarované XML, takže můžete použít XPath nebo jen itereate přes uzly.

http://www.codeplex.com/htmlagilitypack

Odpovězeno 07/08/2008 v 19:38
zdroj uživatelem

hlasů
32

BeautifulSoup je skvělý způsob, jak jít na HTML škrábání. Moje předchozí práce měla mě dělá hodně škrábání a Kéž bych věděl o BeautifulSoup, když jsem začínal. Je to jako DOM s mnohem více užitečných možností a je mnohem pythonic. Pokud si chcete vyzkoušet Ruby oni portován BeautifulSoup volat to RubyfulSoup ale nebyl aktualizován na chvíli.

Další užitečné nástroje jsou HTMLParser nebo sgmllib.SGMLParser které jsou součástí standardní knihovny Pythonu. Působí tak, že volání metod při každém vstupu / výstupu tag a setkání html textu. Jsou jako Expat, pokud jste obeznámeni s tím. Tyto knihovny jsou zvláště užitečné, pokud se chystáte k analýze velkých souborů a vytváření DOM strom by byl dlouhý a nákladný.

Regulární výrazy nejsou velmi potřebné. BeautifulSoup zpracovává regulární výrazy, takže pokud budete potřebovat jejich sílu můžete jej použít tam. Já říkám jít s BeautifulSoup pokud budete potřebovat rychlost a menší nároky na paměť. Pokud zjistíte, lepší HTML parser na Python, dejte mi vědět.

Odpovězeno 07/08/2008 v 19:18
zdroj uživatelem

hlasů
18

Zjistil jsem, HTMLSQL být směšně jednoduchý způsob, jak screenscrape. To trvá doslova minuty získat výsledky s ním.

Tyto dotazy jsou super-intuitivní - jako:

SELECT title from img WHERE $class == 'userpic'

V současné době existuje několik dalších alternativ, které berou stejný přístup.

Odpovězeno 07/08/2008 v 19:31
zdroj uživatelem

hlasů
16

Python LXML knihovna působí jako Pythonic vázána libxml2 a libxslt knihovny. Líbí se mi především svou podporu XPath a pěkný-tisk struktury XML v paměti. Podporuje také rozebrat zlomené HTML. A nemyslím si, že si můžete najít další Python knihovny / vázání, která analyzují XML rychleji než LXML.

Odpovězeno 17/09/2008 v 13:44
zdroj uživatelem

hlasů
15

Pro Perl, je tu WWW :: Mechanize.

Odpovězeno 06/08/2008 v 00:37
zdroj uživatelem

hlasů
11

Proč se nikdo nezmínil JSOUP zatím pro Javu? http://jsoup.org/

Odpovězeno 10/02/2012 v 20:42
zdroj uživatelem

hlasů
11

‚Simple HTML DOM Parser‘ je dobrá volba pro PHP, pokud váš obeznámeni s jQuery nebo JavaScriptu selektorů pak zjistíte sami doma.

Najdete ji zde

K dispozici je také blog post o tom zde.

Odpovězeno 31/07/2009 v 20:39
zdroj uživatelem

hlasů
10

Python má několik možností pro HTML škrábání kromě Beatiful polévka. Zde jsou někteří jiní:

  • mechanizace : podobně jako perl WWW:Mechanize. Dává vám prohlížeč jako objekt ineract s webovými stránkami
  • LXML : Python vazby na libwww. Podporuje různé možnosti přejít a vybrat prvky (např XPath a výběr CSS)
  • scrapemark : vysoká hladina knihovny pomocí šablon pro extrakci informace z HTML.
  • pyquery : umožňuje, aby jQuery podobné dotazy na XML dokumenty.
  • scrapy : Došlo k vysoké úrovni škrábání a web leze rámec. Může být použit k napsání pavouky, pro získávání dat a pro monitorování a automatizované testování
Odpovězeno 28/12/2009 v 17:59
zdroj uživatelem

hlasů
9

Templatemaker utility od Adrian Holovaty (z Django sláva) používá velmi zajímavý přístup: Krmíte ji variace na stejné stránce a „učí“, kde „díry“ na proměnných dat jsou. Není to HTML specifický, takže by bylo dobré pro škrábání jinou textovou obsah stejně. Použil jsem to i pro PDF a HTML převede na nezašifrované podobě (s pdftotext a rys, v uvedeném pořadí).

Odpovězeno 18/09/2008 v 21:13
zdroj uživatelem

hlasů
7

Vím, že i love Screen-škrabka .

Screen-škrabka je nástroj pro získávání dat z webových stránek. Screen-škrabka automatizuje:

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

Běžné použití:

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

Technický:

* 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

Tři edice screen škrabkou:

* 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.
Odpovězeno 16/08/2009 v 21:56
zdroj uživatelem

hlasů
7

Chtěl bych nejprve zjistit, zda je daná lokalita (y) v otázce poskytnutí server API nebo RSS kanály pro přístup k datům budete potřebovat.

Odpovězeno 05/08/2008 v 22:11
zdroj uživatelem


hlasů
5

Já jsem měl nějaký úspěch s HtmlUnit , v Javě. Je to jednoduchý rámec pro psaní unit testy na web UI, ale stejně užitečný pro HTML škrábání.

Odpovězeno 31/08/2008 v 13:09
zdroj uživatelem

hlasů
5

Další možností pro Perl by Web :: Stěrač , který je založený na Ruby Scrapi . Stručně řečeno, s pěkným a stručně syntaxi, můžete získat robustní škrabkou přímo do datových struktur.

Odpovězeno 26/08/2008 v 23:46
zdroj uživatelem

hlasů
5

Škrábání přetečení zásobníku je zvláště snadné boty a Hpricot .

require 'hpricot'

Shoes.app :title => "Ask Stack Overflow", :width => 370 do
  SO_URL = "http://stackoverflow.com"
  stack do
    stack do
      caption "What is your question?"
      flow do
        @lookup = edit_line "stackoverflow", :width => "-115px"
        button "Ask", :width => "90px" do
          download SO_URL + "/search?s=" + @lookup.text do |s|
            doc = Hpricot(s.response.body)
            @rez.clear()
            (doc/:a).each do |l|
              href = l["href"]
              if href.to_s =~ /\/questions\/[0-9]+/ then
                @rez.append do
                  para(link(l.inner_text) { visit(SO_URL + href) })
                end
              end
            end
            @rez.show()
          end
        end
      end
    end
    stack :margin => 25 do
      background white, :radius => 20
      @rez = stack do
      end
    end
    @rez.hide()
  end
end
Odpovězeno 22/08/2008 v 11:20
zdroj uživatelem

hlasů
4

Tam je toto řešení příliš: Netty HttpClient

Odpovězeno 11/05/2011 v 19:28
zdroj uživatelem

hlasů
4

Dalším nástrojem pro NET je MhtBuilder

Odpovězeno 13/02/2009 v 13:58
zdroj uživatelem

hlasů
4

Ačkoli to byl navržen pro .NET webové testování, byl jsem s použitím WATIN rámec pro tento účel. Vzhledem k tomu, že je DOM-based, je to docela snadné zachytit HTML, text nebo obrázky. Recentely, použil jsem ho hodit seznam odkazů od A MediaWiki namespace dotazu všechny stránky do tabulkového procesoru Excel. Následující VB.NET kód fragement je docela primitivní, ale funguje to.


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
Odpovězeno 27/08/2008 v 10:43
zdroj uživatelem

hlasů
4

Použil jsem Krásný polévka hodně s Python. Je to mnohem lepší, než regulárních výrazů kontroly, protože funguje jako pomocí DOM , a to i v případě, že HTML je špatně naformátovaná. Můžete rychle najít HTML tagy a text s jednodušším syntaxi než regulárních výrazů. Jakmile najdete prvek, můžete iterovat přes ni a její děti, které je vhodnější pro porozumění obsahu v kódu, než je tomu u regulárních výrazů. Přeji krásný polévka existovala už před lety, kdy jsem musel udělat hodně screenscraping - to by mi ušetřil spoustu času a bolesti hlavy, protože struktura HTML byl tak chudý, než lidé začali potvrzovat ji.

Odpovězeno 22/08/2008 v 14:58
zdroj uživatelem

hlasů
4

Používám Hpricot na Ruby. Jako příklad lze uvést to je úryvek kódu, který jsem použít k načtení všech knižních titulů z šesti stránkách mého HireThings účtu (jak se nezdá poskytnout jedinou stránku s těmito informacemi):

pagerange = 1..6
proxy = Net::HTTP::Proxy(proxy, port, user, pwd)
proxy.start('www.hirethings.co.nz') do |http|
  pagerange.each do |page|
    resp, data = http.get "/perth_dotnet?page=#{page}" 
    if resp.class == Net::HTTPOK
      (Hpricot(data)/"h3 a").each { |a| puts a.innerText }
    end
  end
end 

Je to skoro kompletní. Vše, co přichází před tím jsou knihovny dovoz a nastavení mého proxy.

Odpovězeno 06/08/2008 v 06:57
zdroj uživatelem

hlasů
3

No, pokud chcete, aby to udělal ze strany klienta pouze pomocí prohlížeče máte jcrawl.com . Po navržen svůj vrakování dopravu z webové aplikace ( http://www.jcrawl.com/app.html ), stačí pouze přidat generovaný skript, aby HTML stránky začít používat / prezentaci dat.

Celou sešrotování logiku děje na prohlížeče pomocí JavaScriptu. Doufám, že vám to užitečné. Kliknutím na tento odkaz pro živý příklad, který extrahuje nejnovější zprávy z Yahoo tenis .

Odpovězeno 29/10/2012 v 16:59
zdroj uživatelem

hlasů
3

Implementace tohoto algoritmu HTML5 rozebrat : html5lib (Python, Ruby), Validator.nu HTML Parser (Java, JavaScript, C ++ ve vývoji), hluk (C), Twintsam (C #, připravované).

Odpovězeno 09/10/2008 v 21:53
zdroj uživatelem

hlasů
3

Ty by být blázen, aby použít Perl .. Zde přicházejí plameny ..

Kost se na těchto modulech a Ginsu některý skřípání kolem.

use LWP
use HTML::TableExtract
use HTML::TreeBuilder
use HTML::Form
use Data::Dumper
Odpovězeno 17/09/2008 v 13:56
zdroj uživatelem

hlasů
3

V Java, můžete použít TagSoup .

Odpovězeno 24/08/2008 v 11:32
zdroj uživatelem

hlasů
3

Použil jsem LWP a HTML :: TreeBuilder s Perl a našli je velmi užitečné.

LWP (zkratka pro libwww-perl) umožňuje připojit k webovým stránkám a skřípání HTML, můžete získat modul sem a O'Reilly kniha se zdá být on-line zde .

TreeBuilder umožňuje postavit strom z HTML a dokumentace a zdroje jsou k dispozici ve formátu HTML :: TreeBuilder - analyzátor, který staví syntaxe HTML strom .

Tam by mohlo být příliš těžké zvedání stále co do činění s něčím, jako je tento přístup ačkoli. Já jsem se podíval na modulu Mechanize navrhl jinou odpověď, takže jsem se může dobře dělat.

Odpovězeno 17/08/2008 v 15:13
zdroj uživatelem

hlasů
2

Líbí se mi funkce Google Spreadsheets' ImportXML (URL, XPath).

To se bude opakovat buňky dolů sloupci, pokud váš výraz XPath vrací více než jednu hodnotu.

Můžete mít až 50 importxml()funkcí na jedné tabulky.

RapidMiner webový Plugin je také velmi snadné použití. To může dělat příspěvků, přijímá soubory cookie, a lze nastavit user-agent .

Odpovězeno 22/07/2010 v 05:31
zdroj uživatelem

hlasů
2

Také jsem měl velký úspěch s použitím Aptana je Jaxer + jQuery analyzovat stránek. Není to tak rychle, nebo ‚script-like‘ v přírodě, ale jQuery selektory + real JavaScript / DOM je zachránce na složitější (či chybně) stránek.

Odpovězeno 19/11/2008 v 20:11
zdroj uživatelem

hlasů
2

Měl jsem smíšené výsledky v .NET pomocí SgmlReader která byla původně založená Chris Lovett a zdá se, že byly aktualizovány MindTouch .

Odpovězeno 27/08/2008 v 19:49
zdroj uživatelem

hlasů
2

Pravděpodobně máte tolik už, ale myslím, že tohle je to, co se snažíte dělat:

from __future__ import with_statement
import re, os

profile = ""

os.system('wget --no-cookies --header "Cookie: soba=(SeCreTCODe)" http://stackoverflow.com/users/30/myProfile.html')
with open("myProfile.html") as f:
    for line in f:
        profile = profile + line
f.close()
p = re.compile('summarycount">(\d+)</div>') #Rep is found here
print p
m = p.search(profile)
print m
print m.group(1)
os.system("espeak \"Rep is at " + m.group(1) + " points\""
os.remove("myProfile.html")
Odpovězeno 05/08/2008 v 23:58
zdroj uživatelem

hlasů
1

Dělám hodně pokročilé webové škrábání, takže chtěl mít naprostou kontrolu nad mým stacku a pochopit omezení. To webscraping knihovna je výsledek.

Odpovězeno 12/04/2011 v 01:20
zdroj uživatelem

hlasů
1

Byl jsem pomocí Feedity - http://feedity.com pro některé stíracího práce (a konverze do RSS kanálů) v mé knihovně. Funguje to dobře pro většinu webových stránek.

Odpovězeno 01/12/2010 v 06:28
zdroj uživatelem

hlasů
1

Nedávné diskuse by Dav Glass Vítejte v džungli! (YUIConf 2011 Opening Keynote) ukazuje, jak můžete použít Yui 3 na Node.js dělat straně klienta podobný programování (s DOM selektorů místo zpracování řetězce) na serveru. Je to velmi působivé.

Odpovězeno 22/11/2010 v 18:04
zdroj uživatelem

hlasů
1

U složitějších seškrabovacích aplikací, bych doporučil webové škrabky IRobotSoft. Je věnován svobodný software pro obrazovky škrábání. Má silný dotazovací jazyk pro HTML stránek, a to poskytuje velmi jednoduchý web záznamové rozhraní, které Vás zbaví mnoha programovacích úsilí.

Odpovězeno 17/05/2010 v 16:58
zdroj uživatelem

hlasů
1

Scrubyt používá Ruby a Hpricot udělat pěkný a jednoduchý web škrábání. Napsal jsem si škrabku pro knihovní službu mé univerzity pomocí tohoto asi za 30 minut.

Odpovězeno 25/08/2008 v 13:02
zdroj uživatelem

hlasů
1

Regulární výrazy fungují docela dobře HTML škrábání stejně ;-) I když po pohledu na krásné polévka, vidím, proč by to být cenným nástrojem.

Odpovězeno 05/08/2008 v 22:29
zdroj uživatelem

hlasů
0

Když přijde na extrakci dat z HTML dokumentu na straně serveru, Node.js je fantastická možnost. Jsem ji úspěšně použita se dvěma moduly nazývají žádosti a ahoj .

Můžete vidět příklad, jak to funguje tady .

Odpovězeno 10/05/2013 v 19:28
zdroj uživatelem

hlasů
0

Udělal jsem velmi pěkné knihovny Internet nástroje pro web škrábání.

Hlavní myšlenkou je, aby odpovídaly šablonu proti webovou stránku, která bude extrahovat všechna data ze stránky a také ověřit, zda stránka struktura zůstává nezměněna.

Takže stačí vzít HTML webové stránky, kterou chcete zpracovávat, odstranit všechny dynamické nebo irelevantní obsah a komentovat zajímavé části.

Např HTML na novou otázku, na stránce indexu stackoverflow.com je:

<div id="question-summary-11326954" class="question-summary narrow">

    <!-- skipped, this is getting too long -->

    <div class="summary">

        <h3><a title="Some times my tree list have vertical scroll ,then I scrolled very fast and the tree list shivered .Have any solution for this.
" class="question-hyperlink" href="/questions/11326954/about-scroll-bar-issue-in-tree">About Scroll bar issue in Tree</a></h3>

    <!-- skipped -->

    </div>
</div>

Takže stačí odstranit tuto určitou id, název a shrnutí, vytvořit šablonu, která bude číst všechny nové otázky v hlavě, přehled, link-matic:

 <t:loop>
   <div class="question-summary narrow">
     <div class="summary">
       <h3>
          <a class="question-hyperlink">
            {title:=text(), summary:=@title, link:=@href}
          </a>
       </h3>
     </div>
   </div>
 </t:loop>

A samozřejmě také podporuje základní techniky, CSS 3 selektory, XPath 2 a XQuery 1 výrazy.

Jediný problém je, že jsem byl tak hloupý, aby to zdarma Pascal knihovna. Ale tam je také jazyk nezávislý web demo .

Odpovězeno 04/07/2012 v 11:43
zdroj uživatelem

hlasů
0

Pro ty, kteří by raději grafické workflow nástroj, RapidMiner (FOSS) má pěknou procházení webu a škrábání zařízení.

Zde je řada videí:

http://vancouverdata.blogspot.com/2011/04/rapidminer-web-crawling-rapid-miner-web.html

Odpovězeno 04/04/2011 v 23:44
zdroj uživatelem

hlasů
-1

SharpQuery

Je to v podstatě jQuery pro C #. Záleží na tom, HTML Agility balíčku pro analýzu HTML.

Odpovězeno 01/12/2010 v 06:41
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more