문제

나는 생각하의 노력 아름다운 수프,파이썬 패키지를 위한 HTML 이 된다고 합니다.은 거기에 다른 어떤 HTML 긁어 패키지를 나는 찾아야?Python 필요하지 않은 내가 실제로 듣고 관심에 대한뿐만 아니라 다른 언어로.

지금까지 이야기:

도움이 되었습니까?

해결책

Ruby 세계 동등을 아름다운 스프 why_the_lucky_stiff 의 Hpricot.

다른 팁

니다.NET 세계,나는 추천 HTML 민첩성 Pack.가 근처에 없으로 간단하의 어떤 위의 옵션을(HTMLSQL)지만,그것은 매우 유연합니다.그것은 당신이 maniuplate 가난하게 형성되 HTML 것처럼 잘 형성되는 XML,그래서 당신이 사용할 수 있습 XPATH 또는 itereate 을 통해 노드입니다.

http://www.codeplex.com/htmlagilitypack

BeautifulSoup 좋은 방법입니다 가 HTML 이 된다고 합니다.이전 작업을 하는 많은 긁고 나무 BeautifulSoup 때 시작했다.그것은 다음과 같은 돔으로 더 많이 사용하고 더 많은 pythonic.당신이 시도하려는 경우 루비들이 포팅 BeautifulSoup 화 RubyfulSoup 하지만 그것이 업데이트되지 않았습니다.

다른 유용한 도구는 HTMLParser 또는 sgmllib.SGMLParser 는 부분 표준 Python 라이브러리입니다.이러한 작업드를 호출하여 매 시간 입력/출 태그가 발생 html text.그들은 같은 해외 거주자는 경우 익숙합니다.이러한 라이브러리는 경우에 특히 유용가를 분석해 매우 큰 파일을 만들고 DOM 트리가 오래되고 비싸다.

정규식이 매우 필요합니다.BeautifulSoup 처리하는 정규 표현식이 필요한 경우 자신의 힘을 이용할 수 있습니다.말 갈 BeautifulSoup 이 필요하지 않는 경우 속도와 작은 메모리 용량.당신은 더 나은 찾을 경우 HTML 파서에 Python 알려주세요.

내가 발견 HTMLSQL 을 엄청나게 하는 간단한 방법 screenscrape.그것은 말 그대로 그 분은 결과를 얻습니다.

쿼리고 다음과 같:

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

가 있은 지금 일부는 다른 대안은 동일한 접근 방식이다.

Python lxml 라이브러리 역할을 Pythonic 바인딩에 대한 libxml2 및 libxslt 라이브러리입니다.나는 다음과 같은 특히 그 XPath 지원 및 인쇄 메모리 XML 은 구조입니다.그것은 또한 지원합 구문 분석 깨 HTML.나는 생각하지 않을 찾을 수 있습 다른 파이썬은 라이브러리/는 바인딩에서는 XML 구문 분석보다 더 빨리 lxml.

에 대한 Perl,가 WWW::기계화.

파이썬은 여러 가지 옵션을 위해 HTML 긁기에 아름다운 스프입니다.여기에 몇 가지 다른 사람은:

  • 기계화:비슷한 perl WWW:Mechanize.당신 같은 브라우저는 개체를 ineract 웹 페이지의
  • lxml:Python 바인딩 libwww.을 지원합한 다양한 옵션을 통과하고 요소를 선택(예: XPath CSS 선택)
  • scrapemark:높은 수준 라이브러리 템플릿을 사용하여 추출하는 정보에서 HTML.
  • pyquery:을 만들 수 있습 jQuery 아에 대한 쿼리를 XML 문서입니다.
  • scrapy:는 높은 수준을 긁고 웹 크롤링 framework.그것을 작성하는 데 사용할 수 있는 거미,를 위한 데이터 마이닝 및 모니터링을 위한하고 자동화된 테스트

'간단한 HTML DOM 파서는'좋은 옵션입니다 PHP 하는 경우,잘 알고 jQuery JavaScript 선택기 당신은 자신 집에서 찾을 수 있습니다.

여기에서 찾을

또한 블로그 게시물에 대한 그것은 여기에.

왜 아무도 없 JSOUP 아직 Java? http://jsoup.org/

templatemaker 유틸리티에서 아드리안 Holovaty(의 Django 명)사용하여 매우 흥미로운 접근법:당신이 그것을 먹이는 변형의 동일한 페이지와 그것은"배우고"여기서"구멍"한 변수 데이터를니다.그것은 HTML 특정,그래서 대 한 좋은 것을 긁는 다른 일반 텍스트 내용뿐만 아니라.내가 사용했던 그것은 또한 대 Pdf 파일을 HTML 로 변환하는 일반 텍스트(가 pdftotext 고 살쾡이는,각각).

내가 먼저 찾는 경우에는 사이트(s)에서 질문을 제공하는 API 서버 또는 RSS 피드는 위한 데이터에 액세스할 필요가 없습니다.

나는 알고 사랑 스크린-스크레이퍼.

스크린-스크레이퍼은 도구에 대한 데이터를 추출하는 웹사이트에서.스크린-스크레이퍼 자동:

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

또 다른 옵션에 대한 Perl 것 웹 사이트::스크레이퍼 을 기반으로 루비스 Scrapi.간단히 말해서,친절하고 간결한 구문,당신이 얻을 수 있는 강력한 스크레이퍼 직접적으로 데이터 구조입니다.

긁 Stack Overflow 은 특히 쉽 신발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

나는 몇 가지 성공 HtmlUnit, 에서,Java.그것은 간단한 프레임 워크 쓰기에 대한 단위 테스트에서는 웹 UI 에,그러나 동등하게 유용한 HTML 이 된다고 합니다.

또 다른 도구니다.NET MhtBuilder

이 너무 솔루션: 드럽 HttpClient

내가 사용하는 Hpricot 에 Ruby.예를 들어 같이트 코드를 사용하는을 검색하는 모든 책 제목에서 여섯 페이지의 내 HireThings 계정(로 그들은 보이지 않을 제공하는 단일 페이지로 이 정보):

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 

그것은 꽤 많은 완료됩니다.제공하는 모든 이전에는 도서관 수입품에 대한 설정과 내 프록시합니다.

내가 사용했던 아름다운 수프와 많이 있습니다.그것은 훨씬 더 이상 정기식 검사,작동하기 때문에 같은 사용 DOM, 는 경우에도,HTML 로 포맷되어 있습니다.빠르게 찾을 수 있습니다 HTML 태그와 텍스트와 함께 하는 간단한 구문을보다 정규표현식이 있습니다.일단 당신이 찾을 수 있는 요소를 반복할 수 있을 통해 그것의 어린이들에게 더 유용하고 이해하는 내용 코드 보다는 정규표현식이 있습니다.나는 아름다운 존재하는 수프 년 전에 있었을 때 많이 할 screenscraping-그것이 나에게 많은 시간과 두통 때문에 HTML 구조는 그래서 가난한 사람들이 시작하기 전에 유효하다.

맞게 설계되었지만 대 .NET 웹사-테스트,사 WatiN 위한 프레임이 목적입니다.이후 그것은 DOM-기반으로,그것은 아주 쉽게 캡처 HTML,text,또는 이미지입니다.Recentely,나는 그것을 덤프하는 링크 목록에서 미디어위키 모든 페이지를 네임스페이스 쿼리 Excel 스프레드시트로.다음 VB.NET code fragment 은 매우 조지만,그것은 작동합니다.


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

구현 HTML5 분석하는 알고리즘: html5lib (Python,Ruby), 검증이다.뉴 HTML 파서 (Java,JavaScript;C++에서 개발), 왁자지껄 (C), Twintsam (C#;곧).

당신 바보를 사용하지 않는 Perl..여기에는 화염..

뼈에는 다음과 같은 모듈과 ginsu 긁어 모든니다.

use LWP
use HTML::TableExtract
use HTML::TreeBuilder
use HTML::Form
use Data::Dumper

LWPHTML::TreeBuilder 펄 및 그들을 발견 매우 유용합니다.

LWP(에 대한 짧은 libwww-perl)연결할 수 있도록 지원하겠습니다 웹 사이트를 긁어 HTML 당신이 얻을 수 있는 모듈에서 사 O'Reilly 예약 는 것 같이 여기에 온라인.

TreeBuilder 을 구성할 수 있는 나무에서 HTML 설명서 원본에서 사용 가능 HTML::TreeBuilder-파서를 작성하는 구문 트리 HTML.

거기에 너무 많은 수 있습니다 무거운 들기 여전히 뭔가 다음과 같이 접근 하지만입니다.내가 보지 않았기에 기계화에 모듈 에 의해 제안 또 다른 대답이다,그래서 내가 잘 수 있습니다.

에서 Java 를 사용할 수 있습니다 TagSoup.

만,당신이 그것을 원하는 경우에 한 클라이언트 측에서만 사용하는 브라우저 jcrawl.com.후에는 설계의 폐기 서비스에서 웹 응용 프로그램(http://www.jcrawl.com/app.html다),당신을 추가해야합니다 생성하는 스크립트는 HTML 페이지를 사용하여 시작/를 제시합니다.

는 모든 폐기 논리에서 일어나는 브라우저에 자바스크립트를 통해.나는 당신이 그것을 찾을 유용합니다.이 링크를 클릭한 라이브 예를 추출하는 최신 뉴스에서 테니스.

당신은 아마 많은 이미지만 제 생각에 이것은 당신이 노력하고 있는 일:

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

나는 결과 혼합니다.를 사용하여 인터넷 SgmlReader 는 원래 의해 시작 크리스 로벳 이 나타납니다에 의해 업데이트되었습니다 MindTouch.

나는 다음과 같이 구글 스프레드시트'ImportXML(URL,XPath)기능이 있습니다.

그것은 반복됩니다 세포에 열을 아래로 당신의 XPath 식 반환 하나 이상의 값이 있습니다.

당신은,최대 50 개까지 사용할 수 있습니다 importxml() 기능에서 하나의 스프레드시트에서도 합니다.

RapidMiner 의 웹 플러그인입니다 또한 아주 쉽게 사용할 수 있습니다.을 할 수 있는 게시물을 받 쿠키 설정할 수 있습니다 user-agent.

나 또한 큰 성공을 거두었을 사용하여 Aptana 의 Jaxer+jQuery 분석 페이지입니다.그것은 빠르게 또는'스크립트와 같은'자연에,하지만 jQuery 선택+진정 자바 스크립트/DOM 이 생명의 은인에는 더 복잡한(또는 잘못된)페이지입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top