दिलचस्प पोस्ट
डिस्प्ले डेटा फ्लास्क व्यू से प्रदर्शित होता है जैसा कि यह अपडेट होता है अंकों के बीच न्यूनतम ईक्लिडियन दूरी, दो अलग-अलग नफारीय एरेज़ में, भीतर नहीं पुनरावर्ती सरणी_एडिफ़ ()? कैसे जूनिट परीक्षण उपकरण के साथ शून्य विधि का परीक्षण करने के लिए? एक वस्तु / फ़ंक्शन / क्लास घोषणापत्र के आसपास के कोष्ठक क्या होता है? सीएसएस का इस्तेमाल करते हुए होवर पर एक छवि पर एक ज़ूम प्रभाव बनाना है? वेब विधि अतुल्यकालिक बनाने की कोशिश कर रहा है क्लास फील्ड क्यों नहीं हो सकते? हे (लॉग एन) में सॉर्ट किए गए मैट्रिक्स (पंक्तियों और कॉलम) में नंबर ढूंढें क्या लेखन-योग्य गुण केवल व्यावहारिक अनुप्रयोग हैं? बैश में एक वेरिएबल में नई पंक्ति को एम्बेड करने की कोशिश एंड्रॉइड के लिए वेबव्यू में ओहोरेराइड यूआरएल लोड करना चाहिए नहीं चल रहा है मैं एंड्रॉइड स्विच कैसे कर सकता हूँ? सूची आइटम को कॉलम के रूप में कैसे प्रदर्शित किया जाए? एक पीडीएफ में UTF-8 एन्कोडेड स्ट्रिंग लिखने के लिए पीडीएफबॉक्स का उपयोग करना

एचटीएमएल स्क्रैपिंग के लिए विकल्प?

मैं सुंदर सूप , एचटीएमएल स्क्रैपिंग के लिए एक पायथन पैकेज की कोशिश करने की सोच रहा हूँ। क्या कोई अन्य HTML स्क्रैपिंग पैकेज मुझे दिखाना चाहिए? अजगर एक आवश्यकता नहीं है, मुझे वास्तव में अन्य भाषाओं के बारे में सुनने में भी दिलचस्पी है I

अब तक की कहानी:

  • अजगर
    • सुंदर सूप
    • lxml
    • HTQL
    • Scrapy
    • मशीनीकरण करना
  • माणिक
    • Nokogiri
    • Hpricot
    • मशीनीकरण करना
    • scrAPI
    • scRUBYt!
    • वोमब्रेट
    • Watir
  • नेट
    • HTML एगिलिटी पैक
    • Watin
  • पर्ल
    • WWW :: मशीनीकरण
    • वेब स्क्रैपर
  • जावा
    • टैग सूप
    • HtmlUnit
    • वेब हार्वेस्ट
    • jARVEST
    • jsoup
    • जेरिको एचटीएमएल पार्सर
  • जावास्क्रिप्ट
    • निवेदन
    • राम-राम
    • artoo
    • नोड घुड़सवार
    • phantomjs
  • पीएचपी
    • Goutte
    • htmlSQL
    • PHP सरल एचटीएमएल डोम पार्सर
    • कर्ल के साथ PHP स्क्रैपिंग
  • उनमें से अधिकांश
    • स्क्रीन-स्क्रैपर

वेब के समाधान से एकत्रित समाधान "एचटीएमएल स्क्रैपिंग के लिए विकल्प?"

सुंदर सूप के लिए रूबी की दुनिया का सममूल्य है क्यों_the_lucky_stiff's Hpricot

.NET दुनिया में, मैं HTML एगिलिटी पैक की सलाह देता हूं। उपरोक्त विकल्पों में से कुछ (जैसे एचएलएलएसक्यूएल) के करीब नहीं हैं, लेकिन यह बहुत लचीला है यह आपको खराब रूप से बनाए गए HTML के रूप में मैन्युप्लेट करता है जैसे कि यह अच्छी तरह से बनाई गई एक्सएमएल है, इसलिए आप XPATH का उपयोग कर सकते हैं या नोड्स पर सिर्फ इरेरेटेट कर सकते हैं।

http://www.codeplex.com/htmlagilitypack

सुंदर सूप HTML स्क्रैपिंग के लिए जाने का एक शानदार तरीका है। मेरी पिछली नौकरी में मुझे बहुत अधिक स्क्रैपिंग करनी थी और मुझे लगता है कि जब मैंने शुरू किया तो मैं सुंदरसुप के बारे में जानता था यह बहुत अधिक उपयोगी विकल्पों के साथ DOM की तरह है और बहुत अधिक अजगर है यदि आप रुबी की कोशिश करना चाहते हैं तो उन्होंने सुंदरसूप को पोर्ट किया है, जिसे रुबीफ़्युलसूप कहते हैं, लेकिन यह कुछ समय में अपडेट नहीं किया गया है।

अन्य उपयोगी उपकरण HTMLParser या sgmllib.SGMLParser हैं जो मानक पायथन लाइब्रेरी का हिस्सा हैं। हर बार जब आप किसी टैग में प्रवेश करते हैं या बाहर निकलते हैं और एचटीएमएल पाठ का सामना करते हैं, तो तरीके कॉल करके ये कार्य। वे एक्पाट की तरह हैं यदि आप उस से परिचित हैं ये लाइब्रेरी विशेष रूप से उपयोगी होती हैं यदि आप बहुत बड़ी फ़ाइलों को पार्स करने जा रहे हैं और एक डोम पेड़ का निर्माण लंबे और महंगी हो

नियमित अभिव्यक्ति बहुत आवश्यक नहीं हैं सुंदर सूप नियमित अभिव्यक्तियों का संचालन करती है, यदि आप उनकी शक्ति की आवश्यकता है तो आप इसे वहां का उपयोग कर सकते हैं। मैं कहता हूं कि सुंदर सूप के साथ जाओ जब तक आपको गति और छोटे स्मृति पदचिह्न की आवश्यकता नहीं होती। यदि आपको पायथन पर एक बेहतर HTML पार्सर मिलेगा, तो मुझे बताएं

मैंने एचटीएमएलएल एसक्यूएल को स्क्रीनसीप करने के लिए एक हास्यास्पद सरल तरीका बताया है। इसके साथ परिणाम प्राप्त करने के लिए वाकई मिनट लगता है।

प्रश्न सुपर-सहज ज्ञान युक्त हैं – जैसे:

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

अब कुछ अन्य विकल्प हैं जो समान दृष्टिकोण लेते हैं।

पर्ल के लिए, WWW :: Mechanize है

पायथन एलएक्सएमएल पुस्तकालय, libxml2 और libxslt पुस्तकालयों के लिए एक पायथनिक बाइंडिंग के रूप में कार्य करता है। मुझे विशेष रूप से इसकी XPath समर्थन और इन-मेमोरी XML संरचना की सुंदर प्रिंटिंग पसंद है। यह टूटी हुई HTML को पार्स करने में सहायता करता है और मुझे नहीं लगता कि आप अन्य पायथन लाइब्रेरीज़ / बाइंडिंग पा सकते हैं जो एक्सएमएल की तुलना में एलएक्सएमएल की तुलना में तेज़ है।

'सरल एचटीएमएल डोम पार्सर' PHP के लिए एक अच्छा विकल्प है, अगर आपके परिचित jQuery या जावास्क्रिप्ट चयनकर्ताओं के साथ आप अपने आप को घर पर मिल जाएंगे।

इसे यहां खोजें

इसके बारे में यहां एक ब्लॉग पोस्ट भी है।

जावा के लिए अभी तक कोई भी JSOUP का उल्लेख क्यों नहीं किया गया है? http://jsoup.org/

पायथन में बीटिपुलर सूप के अतिरिक्त एचटीएमएल स्क्रैपिंग के लिए कई विकल्प हैं यहां कुछ अन्य हैं:

  • मशीनीज़ : पर्ल के समान: WWW:Mechanize आपको वेब पेजों के साथ ineract करने के लिए ऑब्जेक्ट की तरह एक ब्राउज़र देता है
  • libwww : libwww लिए बाइंडिंग पायथन तत्वों को पार करने और चयन करने के लिए विभिन्न विकल्पों का समर्थन करता है (जैसे XPath और CSS चयन)
  • scrapemark : HTML से informations निकालने के लिए टेम्पलेट्स का उपयोग उच्च स्तरीय पुस्तकालय
  • pyquery : आप XML दस्तावेज़ों की तरह jQuery की क्वेरीज़ की अनुमति देता है।
  • स्क्रेपी : एक उच्च स्तरीय स्क्रैपिंग और वेब क्रॉलिंग फ्रेमवर्क इसे मकड़ियों लिखने, डेटा खनन के लिए और निगरानी और स्वचालित परीक्षण के लिए इस्तेमाल किया जा सकता है

Adrian Holovaty ( Django प्रसिद्धि के) से टेम्पलेटमेकर उपयोगिता एक बहुत ही दिलचस्प दृष्टिकोण का उपयोग करती है: आप इसे एक ही पृष्ठ के विविधताओं को खिलाते हैं और यह "सीखता है" जहां चर डेटा के लिए "छेद" हैं यह HTML विशिष्ट नहीं है, इसलिए किसी भी अन्य सादा-सामग्री सामग्री को भी स्क्रैप करने के लिए अच्छा होगा। मैंने इसे पीडीएफ़ और एचटीएमएल के लिए भी इस्तेमाल किया है जो सादा टेक्स्ट में परिवर्तित होता है (क्रमशः pdftotext और lynx के साथ)।

मुझे पहली बार पता चल जाएगा कि यदि प्रश्न में साइट (ए) आपको आवश्यक डेटा तक पहुंचने के लिए एपीआई सर्वर या आरएसएस फ़ीड प्रदान करती है।

मैं स्क्रीन-स्क्रेपर को जानता हूं और उससे प्यार करता हूं

स्क्रीन-स्क्रेपर वेबसाइटों से डेटा निकालने का एक उपकरण है। स्क्रीन-स्क्रैपर स्वचालित:

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

स्क्रैपिंग स्टैक ओवरफ़्लो जूते और एचपीरकोट के साथ विशेष रूप से आसान है

 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 के साथ मुझे कुछ सफलता मिली है वेब यूआई पर इकाई परीक्षण लिखने के लिए यह एक सरल ढांचा है, लेकिन HTML स्क्रैपिंग के लिए उतना ही उपयोगी है।

याहू! क्वेरी भाषा या YQL का उपयोग स्क्रैप वेब पेजों को स्क्रीन करने के लिए jQuery, AJAX, JSONP के साथ किया जा सकता है

पर्ल के लिए एक और विकल्प होगा वेब :: स्क्रेपर जो रूबी के स्क्रैपी पर आधारित है। संक्षेप में, अच्छा और संक्षिप्त सिंटैक्स के साथ, आप सीधे डेटा संरचनाओं में एक मजबूत खुरचला प्राप्त कर सकते हैं।

.NET के लिए एक अन्य उपकरण MhtBuilder है

यह समाधान भी है: नेटी एचटीटीपी क्लाइंट

मैं रूबी पर एचपीरिकॉट का उपयोग करता हूं उदाहरण के तौर पर यह कोड का एक स्निपेट है जिसका उपयोग मैं अपने हैरट टाइटिंग खाते के छह पृष्ठों से सभी किताबों के खिताब को पुनर्प्राप्त करने के लिए करता हूं (जैसा कि वे इस जानकारी के साथ एक पृष्ठ प्रदान नहीं करते हैं):

 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 खराब स्वरूपित हो। आप नियमित रूप से अभिव्यक्तियों की तुलना में सरल सिंटैक्स के साथ एचटीएमएल टैग और टेक्स्ट को आसानी से पा सकते हैं। एक बार जब आप एक तत्व खोज लेते हैं, तो आप इसे और उसके बच्चों को फिर से दोहरा सकते हैं, जो नियमित अभिव्यक्ति के साथ कोड की सामग्री को समझने के लिए अधिक उपयोगी है। मैं चाहता हूं कि सुंदर सूप कई साल पहले जब मुझे बहुत सारे स्क्रीन कैरेक्ट करना पड़ा – यह मुझे बहुत समय और सिरदर्द से बचाएगा क्योंकि एचटीएमएल संरचना इतनी खराब थी क्योंकि लोगों ने इसे वैध करना शुरू कर दिया था।

यद्यपि यह .NET वेब-परीक्षण के लिए डिज़ाइन किया गया था, मैं इस उद्देश्य के लिए WatiN ढांचे का उपयोग कर रहा हूं। चूंकि यह DOM- आधारित है, इसलिए यह एचटीएमएल, पाठ, या छवियों को पकड़ना आसान है। हाल ही में, मैं इसे एक मीडिया स्पष्टीकरण में मीडियाविकी सभी पेज नेमस्पेस क्वेरी से लिंक की एक सूची डंप करने के लिए उपयोग किया था। निम्नलिखित 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 

एचटीएमएल 5 पार्सिंग एल्गोरिथ्म के कार्यान्वयन: html5lib (पायथन, रूबी), वैलिडेटेटर.एनयू एचटीएमएल पार्सर (जावा, जावास्क्रिप्ट; सी + + इन डेवलपमेंट), हब्बब (सी), ट्विनटासम (सी #; आगामी)

तुम बेवकूफ हो, पर्ल का इस्तेमाल नहीं करोगे। यहाँ आग लग गई ..

निम्न मॉड्यूल पर हड्डी और गिंसू के चारों ओर कोई स्क्रैप।

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

मैंने LWP और HTML :: TreeBuilder का उपयोग पर्ल के साथ किया है और उन्हें बहुत उपयोगी पाया है

एलडब्लूपी (लिब-पी-पीएल के लिए छोटा) आपको वेबसाइटों से जुड़ने और एचटीएमएल स्क्रैप करने की सुविधा देता है, आप यहां मॉड्यूल प्राप्त कर सकते हैं और ओ रेली की किताब यहां ऑनलाइन लगती है ।

TreeBuilder आपको HTML से एक पेड़ का निर्माण करने की अनुमति देता है, और प्रलेखन और स्रोत HTML :: TreeBuilder – Parser में उपलब्ध हैं जो एक HTML सिंटैक्स पेड़ बनाता है

हालांकि इस दृष्टिकोण की तरह कुछ के साथ अभी भी बहुत अधिक भार उठाने के लिए हो सकता है मैंने एक और जवाब के द्वारा दिए गए मैकेनाइज्ड मॉड्यूल पर विचार नहीं किया है, इसलिए मैं ऐसा कर सकता हूं।

जावा में, आप टैग सॉप का उपयोग कर सकते हैं

ठीक है, अगर आप चाहते हैं कि क्लाइंट की ओर से केवल एक ब्राउज़र का उपयोग करके किया जाए जिसमें आपके पास 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 का उपयोग करके .NET में मिश्रित परिणाम हैं, जो मूल रूप से क्रिस लवेट द्वारा शुरू किया गया था और माइंड-टच द्वारा अपडेट किया गया लगता है।

मुझे Google स्प्रैडशीट्स 'आयात एक्सएमएल (यूआरएल, एक्सपैथ) फ़ंक्शन पसंद है।

यदि आपकी XPath अभिव्यक्ति एक से अधिक मान लौटती है, तो यह कॉलम को नीचे दोहराएगा।

आपके पास एक स्प्रेडशीट में 50 importxml() फ़ंक्शन हो सकते हैं।

रैपिडमिन्नेर का वेब प्लगइन भी उपयोग में आसान है। यह पोस्ट कर सकता है, कुकी स्वीकार करता है, और उपयोगकर्ता-एजेंट सेट कर सकता है।

पेजों को पार्स करने के लिए मेरे पास Aptana's Jaxer + jQuery का उपयोग करने में काफी सफलता मिली है प्रकृति में यह तेज़ या 'स्क्रिप्ट-जैसी' नहीं है, लेकिन jQuery चयनकर्ता + असली जावास्क्रिप्ट / डीओएम एक और अधिक जटिल (या विकृत) पृष्ठों पर लाइफसेवर है।