HTML kazıma için seçenekler?

oy
378

Ben denemeyi düşünüyorum Güzel çorba , HTML kazma işleminde bir Python paketi. Ben bakıyor olmalıdır başka bir HTML kazıma paketleri var mı? Python Ben de diğer diller hakkında işitme aslında ilgileniyorum, bir gereklilik değildir.

Hikaye şimdiye kadar:

Oluştur 05/08/2008 saat 22:09
kaynak kullanıcı
Diğer dillerde...                            


40 cevaplar

oy
54

Güzel Çorbası Yakut dünyanın eşdeğer why_the_lucky_stiff en olduğunu hpricot .

Cevap 05/08/2008 saat 22:13
kaynak kullanıcı

oy
39

.NET dünyasında, HTML Çeviklik Paketi önerilir. Değil yakın olarak (HTMLSQL gibi) Yukarıdaki seçeneklerden bazıları gibi basit, ama çok esnek. Bu iyi XML oluşan sanki kötü HTML kurdu maniuplate sağlar, böylece düğümler üzerinde XPath ya da sadece itereate kullanabilirsiniz.

http://www.codeplex.com/htmlagilitypack

Cevap 07/08/2008 saat 19:38
kaynak kullanıcı

oy
32

BeautifulSoup HTML kazıma gitmek için harika bir yoldur. Benim daha önceki iş beni kazıma bir sürü yapıyor vardı ve ben başladığımda BeautifulSoup hakkında bilseydim. Bu çok daha fazla kullanışlı seçenekleri ile DOM gibi ve çok daha pythonic olduğunu. Ruby'yi denemek istiyorsanız bunu çağırarak BeautifulSoup taşıdık RubyfulSoup ama bir süre güncellendi değildir.

Diğer yararlı araçlar HTMLParser veya sgmllib.SGMLParser standart Python kütüphanesi parçası olan vardır. yöntemleri Eğer / çıkış, bir etiket ve karşılaşma html metin girmek her zaman arayarak bu iş. Bunu aşina iseniz Onlar Expat gibiler. Eğer çok büyük dosyalar ayrıştırmak gidip bir DOM ağacı uzun ve pahalı olur oluşturuyorsanız Bu kütüphaneler özellikle yararlıdır.

Düzenli ifadeler çok gerekli değildir. Eğer güçlerini gerekirse orada kullanmak böylece BeautifulSoup normal ifadeleri işler. Sana hız ve küçük bir bellek izi gerekmedikçe BeautifulSoup yönel derim. Eğer Python üzerinde daha iyi bir HTML ayrıştırıcı bulursanız, bana bildirin.

Cevap 07/08/2008 saat 19:18
kaynak kullanıcı

oy
18

Buldum HTMLSQL ekrandan veri için gülünç basit bir yol olarak. O onunla sonuçları almak için tam anlamıyla dakika sürer.

sorgular süper sezgisel - gibi:

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

Aynı yaklaşım diğer bazı alternatifler şimdi vardır.

Cevap 07/08/2008 saat 19:31
kaynak kullanıcı

oy
16

Python lxml libxml2 ve Libxslt'nin kütüphaneleri için bağlayıcı bir Pythonic olarak kütüphane davranır. Özellikle kendi XPath desteği ve bellek içi XML yapısının oldukça-baskı gibi. Aynı zamanda kırık HTML ayrıştırma destekler. Ve daha hızlı LXML daha XML ayrıştırmak diğer Python kütüphaneleri / bağlamaları bulabilirsiniz sanmıyorum.

Cevap 17/09/2008 saat 13:44
kaynak kullanıcı

oy
15

Perl için, WWW :: motorize var.

Cevap 06/08/2008 saat 00:37
kaynak kullanıcı

oy
11

Neden kimse Java için henüz JSOUP sözü var? http://jsoup.org/

Cevap 10/02/2012 saat 20:42
kaynak kullanıcı

oy
11

Sonra evde bulacaksınız jQuery veya JavaScript seçicileri ile tanıdık varsa 'Basit HTML DOM Ayrıştırıcı', PHP için iyi bir seçenektir.

Burada bulun

Burada bu konuda bir blog yazısı da vardır.

Cevap 31/07/2009 saat 20:39
kaynak kullanıcı

oy
10

Python HTML Beatiful Çorbası ek olarak kazıma için çeşitli seçenekler vardır. İşte bazı diğerleri şunlardır:

  • makineleştirmek : Perl programının benzer WWW:Mechanize. Size web sayfaları ile ineract için nesne gibi bir tarayıcı verir
  • Lxml : Python bağlanma libwww. Elementler (örn çapraz ve seçmek için çeşitli seçenekleri destekler XPath ve CSS seçimi)
  • scrapemark : HTML bilgileri ayıklamak için şablonları kullanarak yüksek seviyede kütüphanesi.
  • pyquery : XML belgeler üzerinde sorgular gibi jQuery yapmanızı sağlar.
  • scrapy : Bir üst düzey kazıma ve web çerçevesi tarama. Veri madenciliği için ve izlenmesi için, örümcekler yazmak için kullanılan ve test otomatik hale getirilebilir
Cevap 28/12/2009 saat 17:59
kaynak kullanıcı

oy
9

Templatemaker (Adrian Holovaty dan yarar Django Aynı sayfanın varyasyonların beslemek ve değişken veriler için "delik" nerede "öğrenir": Ün) çok ilginç bir yaklaşım kullanır. Belirli HTML değil, bu yüzden de herhangi bir başka düz metin içerik toplama için iyi olurdu. Ben PDF'ler için de kullandım ve HTML (sırasıyla pdftotext ve vaşak ile) düz metne dönüştürülür.

Cevap 18/09/2008 saat 21:13
kaynak kullanıcı

oy
7

Biliyorum ve aşk Ekran-Kazıyıcı .

Ekran-Kazıyıcı web sitelerinden veri ayıklamak için bir araçtır. Ekran Kazıyıcı otomatik hale:

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

Yaygın kullanım:

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

Teknik:

* 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

Ekran-sıyırıcı Üç sürümleri:

* 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.
Cevap 16/08/2009 saat 21:56
kaynak kullanıcı

oy
7

Söz konusu site (ler) bir API sunucu sağlamak veya RSS erişimi için size gereken verileri Feeds eğer ilk öğrenmek istiyorum.

Cevap 05/08/2008 saat 22:11
kaynak kullanıcı


oy
5

Ben bazı başarı elde ettik HtmlUnit'in Java. Bu basit bir web arayüzü en üstünde birim testleri yazmak için çerçeve, ancak HTML kazma işleminde eşit yararlıdır.

Cevap 31/08/2008 saat 13:09
kaynak kullanıcı

oy
5

Perl için başka bir seçenek olacaktır Web :: Kazıyıcı Ruby'nin dayanmaktadır Scrapi . Özetle, güzel ve özlü söz dizimi ile, veri yapılarına doğrudan sağlam kazıyıcı alabilirsiniz.

Cevap 26/08/2008 saat 23:46
kaynak kullanıcı

oy
5

Kazıma yığın taşması ile özellikle kolaydır Ayakkabı ve 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
Cevap 22/08/2008 saat 11:20
kaynak kullanıcı

oy
4

Bu çözüm çok vardır: netty HttpClient

Cevap 11/05/2011 saat 19:28
kaynak kullanıcı

oy
4

.NET için bir başka araçtır MhtBuilder

Cevap 13/02/2009 saat 13:58
kaynak kullanıcı

oy
4

Onun için tasarlanmış olmasına rağmen .NET web testleri, ben kullanarak oldum watin bu amaçla bir çerçeve. O DOM tabanlı olduğundan, HTML, metin veya görüntü yakalamak için oldukça kolaydır. Recentely, bir gelen bağlantıların bir listesini dökümü için kullandım MediaWiki bir Excel elektronik tabloya Tüm Sayfalar ad sorgusu. Aşağıdaki VB.NET kodu Fragement oldukça kabadır, ama çalışıyor.


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
Cevap 27/08/2008 saat 10:43
kaynak kullanıcı

oy
4

Ben Güzel çorba Python ile çok kullandım. O kullanarak gibi çalışır, çünkü düzenli ifade denetimi daha iyidir DOM HTML, kötü biçimlendirilmiş olsa bile. Hızlı bir şekilde düzenli ifadeler daha basit sözdizimi ile HTML etiketleri ve metin bulabilirsiniz. Bir öğeyi bulduğunuzda, düzenli ifadelerle daha kodunda içeriğini anlamak için daha yararlı olan o ve onun çocukları adımlayabilirsiniz. Ben ekrandan veri bir sürü yapmak zorunda olduğunda Güzel Çorba yıl önce var dilek - insanlar bunu doğrulayarak başlamadan önce HTML yapısı o kadar zayıftı beri bana zaman ve baş ağrısı bir çok kaydetmiş.

Cevap 22/08/2008 saat 14:58
kaynak kullanıcı

oy
4

Ben Ruby on hpricot kullanın. Örnek olarak bu I (bu bilgileri içeren tek bir sayfası sağlamak için görünmüyor gibi) benim HireThings hesabının altı sayfalarından tüm kitap başlıkları almak için kullanmak kod snippet'idir:

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 

Hemen hemen tam bu. Bu benim proxy için kütüphane ithalat ve ayarları önce Bütün bu gelir.

Cevap 06/08/2008 saat 06:57
kaynak kullanıcı

oy
3

İstersen Eh, senin tek bir tarayıcı kullanarak istemci tarafından yapılan jcrawl.com . Web uygulaması (adresinin hurdaya hizmeti tasarlanmış ettikten sonra http://www.jcrawl.com/app.html ), yalnızca veri sunmak / kullanmaya başlamak için bir HTML sayfasına oluşturulan komut dosyası eklemek gerekir.

Tüm hurdaya mantık JavaScript aracılığıyla tarayıcıda olur. Ben bunu yararlı bulacağını umuyorum. Ayıklar canlı örneğin bu bağlantıyı tıklayın Yahoo tenis en son haberleri .

Cevap 29/10/2012 saat 16:59
kaynak kullanıcı

oy
3

Uygulamaları HTML5 ayrıştırma algoritması : html5lib (Python, Ruby), Validator.nu HTML Ayrıştırıcı (Java, JavaScript; gelişiminde C ++), şamata (C) Twintsam (C #; yaklaşan).

Cevap 09/10/2008 saat 21:53
kaynak kullanıcı

oy
3

Sen burada .. Perl kullanmamayı aptal olması alevleri gelirdi ..

herhangi etrafında kazımak aşağıdaki modülleri ve Ginsu üzerinde Kemik kadar.

use LWP
use HTML::TableExtract
use HTML::TreeBuilder
use HTML::Form
use Data::Dumper
Cevap 17/09/2008 saat 13:56
kaynak kullanıcı

oy
3

Java'da, kullanabilirsiniz TagSoup .

Cevap 24/08/2008 saat 11:32
kaynak kullanıcı

oy
3

Ben kullandım LWP ve HTML :: TreeBuilder Perl ile ve onları çok yararlı bulduk.

LWP (libwww-perl kısaltması) web sitelerine bağlanmak ve HTML kazımak sağlar, burada modülünü alabilirsiniz ve O'Reilly kitabı çevrimiçi burada gibi görünüyor .

TreeBuilder HTML gelen bir ağaç oluşturmak için izin verir ve dokümantasyon ve kaynak mevcuttur HTML :: TreeBuilder - HTML sözdizimi ağacı oluşturur Ayrıştırıcı .

Yine de bu yaklaşım böyle bir şey ile ilgisi çok fazla ağır kaldırma olabilir. Ben bakmadım makineleştirmek modülü başka bir yanıt önerdiği, bu yüzden de bu sonuçlara yol açabilir.

Cevap 17/08/2008 saat 15:13
kaynak kullanıcı

oy
2

Google E-Tablolar ImportXML (URL, XPath) işlevi gibi.

XPath ifadesi birden fazla değer döndürür eğer sütununda aşağı hücreleri tekrar edecektir.

En çok 50 olabilir importxml()tek tablo üzerinde işlevleri.

RapidMiner Web Eklentisi da kullanmak oldukça kolaydır. Bu çerezleri kabul, mesajları yapabilir ve ayarlayabilirsiniz kullanıcı aracısı .

Cevap 22/07/2010 saat 05:31
kaynak kullanıcı

oy
2

Ayrıca sayfaları ayrıştırmak için aptana en Jaxer + jQuery kullanarak büyük başarı elde ettik. Doğada kadar hızlı ya da 'komut benzeri' değil, ama jQuery seçiciler + gerçek JavaScript / DOM daha karmaşık (veya hatalı) sayfalarında bir cankurtaran olduğunu.

Cevap 19/11/2008 saat 20:11
kaynak kullanıcı

oy
2

Başlangıçta tarafından başlatıldı SgmlReader kullanarak .NET karışık sonuçlar elde ettim Chris Lovett ve güncelleyen gibi görünüyor MindTouch .

Cevap 27/08/2008 saat 19:49
kaynak kullanıcı

oy
2

Muhtemelen kadar zaten var, ama bu Yapmaya çalıştığınız ne olduğunu düşünüyorum:

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")
Cevap 05/08/2008 saat 23:58
kaynak kullanıcı

oy
1

Öyle kazıma gelişmiş web çok benim yığını üzerinde tam kontrole sahip ve sınırlamaları anlamak istedim yapmak. Bu webscraping kütüphane sonucudur.

Cevap 12/04/2011 saat 01:20
kaynak kullanıcı

oy
1

Ben Feedity kullanıyorum - http://feedity.com benim kütüphanede (RSS içine ve dönüşüm beslemeleri) kazıma çalışmaları bazıları için. Çoğu web sayfaları için iyi çalışır.

Cevap 01/12/2010 saat 06:28
kaynak kullanıcı

oy
1

Dav Glass tarafından son konuşma Jungle hoş geldiniz! (YUIConf 2011 Açılış Açılış) Eğer nasıl kullanabileceğini göstermektedir YUI 3 üzerinde node.js sunucuda (yerine dize işleme DOM selektörlü) clientside benzeri programlama yapmak. Çok etkileyici.

Cevap 22/11/2010 saat 18:04
kaynak kullanıcı

oy
1

Daha karmaşık kazıma uygulamaları için, ben IRobotSoft web kazıyıcı öneriyoruz. Bu ekran kazıma için özel bir serbest yazılımdır. Bu HTML sayfaları için güçlü bir sorgulama dili vardır ve birçok programlama çaba sizi özgür irade çok basit bir web kayıt arayüz sağlar.

Cevap 17/05/2010 saat 16:58
kaynak kullanıcı

oy
1

Scrubyt hoş ve kolay web kazıma yapmak Ruby ve hpricot kullanır. Ben yaklaşık 30 dakika içinde bu kullanarak üniversitenin kütüphane hizmeti için bir kazıyıcı yazdı.

Cevap 25/08/2008 saat 13:02
kaynak kullanıcı

oy
1

Düzenli ifadeler HTML yanı kazıma ;-) bu değerli bir araç olacağını niçin Güzel Çorbası baktıktan sonra, görebildiğim rağmen oldukça işe.

Cevap 05/08/2008 saat 22:29
kaynak kullanıcı

oy
0

Sunucu tarafında bir HTML belgesinden veri ayıklama gelince, node.js fantastik bir seçenektir. Aradım iki modülleri ile başarılı bir şekilde kullanmıştır isteği ve güle güle .

Nasıl çalıştığını Sen bir örnek görebilirsiniz burada .

Cevap 10/05/2013 saat 19:28
kaynak kullanıcı

oy
0

Ben çok güzel bir kütüphane yapımı İnternet Araçları web kazıma için.

Fikir sayfadaki tüm veri ayıklamak ve aynı zamanda sayfa yapısı değişmeden ise doğrular web sayfası, karşı bir şablon maç etmektir.

Yani sadece, işlemek istediğiniz web sayfasının HTML alan tüm dinamik veya alakasız içeriği kaldırmak ve ilginç parçaları açıklama ekleyebilirsiniz.

stackoverflow.com indeks sayfasında yeni soru için Örn HTML:

<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>

sadece bu belirli id, başlık ve özetini çıkarmak Yani, başlık, özet, bağlantı-dizilerde tüm yeni sorular okuyacak bir şablon oluşturmak için:

 <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>

Ve tabii o da temel teknikleri, CSS 3 seçiciler, XPath 2 ve XQuery 1 ifadeler destekler.

Tek sorun ben bir hale getirmek için bu kadar aptal olmasıdır Free Pascal kütüphanesi. Ama aynı zamanda dil bağımsız olduğu web demosu .

Cevap 04/07/2012 saat 11:43
kaynak kullanıcı

oy
0

grafiksel iş akışı aracı tercih edeceğini olanlar için, RapidMiner (FOSS) güzel bir web tarama ve tesis kazıma vardır.

İşte videoların bir dizi var:

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

Cevap 04/04/2011 saat 23:44
kaynak kullanıcı

oy
-1

SharpQuery

Bu C # için temelde jQuery bu. Bu bağlıdır HTML çeviklik Paketi HTML ayrıştırma için.

Cevap 01/12/2010 saat 06:41
kaynak kullanıcı

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