আমি কীভাবে কোনও নোড.জেএসএস সহ একটি HTML পৃষ্ঠাগুলি পার্স করব


94

আমার বড় পরিমাণে এইচটিএমএল পৃষ্ঠাগুলি পার্স করা উচিত (সার্ভার সাইড)।
আমরা সকলেই একমত যে রেজিএক্সএক্স এখানে যাওয়ার উপায় নয়।
আমার কাছে মনে হয় জাভাস্ক্রিপ্ট হ'ল এইচটিএমএল পৃষ্ঠাগুলি পার্স করার মূল উপায়, তবে এই অনুমানটি সার্ভারের সাইড কোডের উপর নির্ভর করে যা একটি ব্রাউজারের মধ্যে সমস্ত ডিওএম সক্ষমতার জাভাস্ক্রিপ্ট রয়েছে।

নোড.জেসের কি সেই ক্ষমতাটি অন্তর্নিহিত রয়েছে?
সার্ভার সাইডে এইচটিএমএলকে বিশ্লেষণ করে এই সমস্যার আরও ভাল পদ্ধতির কী আছে?

উত্তর:


87

আপনি নোড.জেএসএমে একটি ডিওএম তৈরি এবং বিশ্লেষণের জন্য এনপিএম মডিউলগুলি জএসডম এবং এইচটিএমপ্লসার ব্যবহার করতে পারেন।

অন্যান্য বিকল্পের মধ্যে রয়েছে:

  • BeautifulSoup পাইথন জন্য
  • আপনি এইচটিএমএলকে এক্সএইচটিএমএল রূপান্তর করতে এবং এক্সএসএলটি ব্যবহার করতে পারেন
  • .NET এর জন্য HTMLAgilityPack
  • নেট (আমার নতুন প্রিয়) এর জন্য সিএসকিউয়ারি
  • স্পাইডারমনকি এবং গেন্ডার জেএস ইঞ্জিনগুলির নেটিভ E4X সমর্থন রয়েছে। আপনি যদি এইচটিএমএলকে এক্সএইচটিএমএলে রূপান্তর করেন তবেই এটি কার্যকর হতে পারে।

এই সমস্ত বিকল্পগুলির মধ্যে, আমি নোড.জেএস বিকল্পটি পছন্দ করি কারণ এটি স্ট্যান্ডার্ড ডাব্লু 3 সি ডোম এক্সেসর পদ্ধতি ব্যবহার করে এবং আমি ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রেই কোডটি পুনরায় ব্যবহার করতে পারি। আমি আশা করি বিউটি 3 স ডোমের সাথে বিউটিফুলসপের পদ্ধতিগুলি আরও অনুরূপ ছিল এবং আমি মনে করি যে আপনার এইচটিএমএলকে এক্সএসএলটি এক্সেএসএলটি লিখতে রূপান্তরিত করা কেবল সরল দুঃখজনক।


4
ভাল বলতে কী বোঝ? নির্ভরযোগ্য, দ্রুত, সহজ? ভাল এই দুটি সঙ্গে, এটি যথেষ্ট শক্তিশালী যাতে আপনি চাইলে jQuery সার্ভারসাইড ব্যবহার করতে পারেন
kzh

4
@ কেজেড নির্ভরযোগ্য এবং সহজ আমার কাছে আরও গুরুত্বপূর্ণ তবে যদি প্রক্রিয়াটি এক ঘন্টা বা একদিনের মধ্যে শেষ হয়।
Itay Moav -Malimovka

আমি বলব যে নোড বিকল্পটি নির্ভরযোগ্য এবং স্পষ্টতই সহজ যদি আপনি ইতিমধ্যে ডোমে অভ্যস্ত হন।
kzh

আপনি যদি htmlparser এর জন্য শুটিং করেন তবে প্রথমে github.com/fb55/node-htmlparser এর সাথে যাওয়ার চেষ্টা করুন । এটি একটি পুনর্গঠিত সংস্করণ বলে মনে হচ্ছে এবং আরও সক্রিয়ভাবে রক্ষণাবেক্ষণ করা হচ্ছে।
করবার্গার

আমি ইন্টারনেট উপর সব সন্ধান করেছি কিন্তু htmlparser একটি ভাল টিউটোরিয়াল খুঁজে পাচ্ছি না ..
songyy

63

চেরিও ব্যবহার করুন । এটি জাসডমের মতো কঠোর নয় এবং স্ক্র্যাপিংয়ের জন্য অনুকূলিত। বোনাস হিসাবে, আপনার ইতিমধ্যে জানা jQuery নির্বাচকগুলি ব্যবহার করুন।

Iliar পরিচিত সিনট্যাক্স: চেরিও মূল jQuery এর একটি উপসেট প্রয়োগ করে। চেরিও jQuery লাইব্রেরি থেকে সমস্ত DOM অসঙ্গতি এবং ব্রাউজার ক্রাফ্ট অপসারণ করে এর সত্যই চমত্কার এপিআই প্রকাশ করে।

z স্বচ্ছলভাবে দ্রুত: চেরিও একটি খুব সাধারণ, ধারাবাহিক ডিওএম মডেলের সাথে কাজ করে। ফলস্বরূপ পার্সিং, কারচুপি করা এবং রেন্ডারিং অবিশ্বাস্যভাবে দক্ষ। প্রাথমিক শেষ থেকে শেষের মানদণ্ডগুলি সুপারিশ করে যে চেরিও জেএসডোমের চেয়ে প্রায় 8x দ্রুত।

Ane উত্সাহী নমনীয়: চেরিও @ এফবি 55 এর ক্ষমাশীল এইচটিএমপলসারকে ঘিরে রেখেছে। চেরিও প্রায় কোনও এইচটিএমএল বা এক্সএমএল নথি পার্স করতে পারে।


8
তবে ডোম তৈরি করে না এবং এক্সপথকে অনুমতি দেয় না। jQuery সিনট্যাক্স অবশ্যই সেই লাইব্রেরির একটি খারাপ দিক।
polkovnikov.ph

4
আমার অভিজ্ঞতায় @ পোলকোনিকিকভ.এফ খুব কম অ্যাপ্লিকেশনটির জন্য সম্পূর্ণ ডিওএম পার্সিংয়ের প্রয়োজন, এবং ডাব্লু বিল্ডিং জকিউয়ারি / চেরিওর "অলস" মূল্যায়নের তুলনায় খুব ব্যয়বহুল। এই অর্থে jQuery- স্টাইল পার্সিং একটি সুবিধা, কিন্তু যদি আপনার অ্যাপ্লিকেশনটির DOM সার্ভার-সাইডটি ম্যানিপুলেট করতে হয় তবে আপনি jsdom চেষ্টা করতে পছন্দ করতে পারেন।
মিকোহি

jsdom
এটির

4
@ মোহামেদ মনসুর এর মূল্য কী তা আমরা প্রযোজনায় চেরিও ব্যবহার করছি এবং কয়েক সেকেন্ডে কয়েক হাজার পৃষ্ঠা মুছে ফেলছি। "দ্রুত" এবং "ধীর" সমস্ত আপনার প্রয়োগ এবং অবশ্যই ব্যান্ডউইথের সাথে সম্পর্কিত th
মেকোহি

অ-কঠোর: +1। jQuery বাক্য গঠন: +1।
চিজাস

11

Htmlparser2 ব্যবহার করুন , এর উপায়টি দ্রুত এবং বেশ সোজা। এই ব্যবহার উদাহরণের সাথে পরামর্শ করুন:

https://www.npmjs.org/package/htmlparser2#usage

এবং এখানে লাইভ ডেমো:

http://demos.forbeslindesay.co.uk/htmlparser2/


সঠিক ধরণের আউটপুট কীভাবে পাবেন, যেটি এই ডেমোতে পাওয়া যায়?
পেঙ্গুইন 9

6

FB55 দ্বারা Htmlparser2 ভাল বিকল্প বলে মনে হচ্ছে।


4
এবং এই রিটার্ন ফর্ম্যাটটির সাথে একটি করা উচিত ? লুপ এবং ট্রি ট্র্যাভারসালের জন্য একটি গুচ্ছ লিখুন?
polkovnikov.ph

আপনি ট্যাগ ইভেন্টগুলি খুলতে / বন্ধ করতে নিবন্ধন করতে পারেন, তাই আপনি যা চান তার উপর নির্ভর করে এটি সত্যিই একটি ভাল বিকল্প ইমো।
ফিল

@ পোলকোনিকিকভ.এফ একই লেখকের ডোমটিলস প্যাকেজও রয়েছে যা এইচটিএমপ্লারসার 2 দ্বারা ফর্ম্যাট করে কাজ করে - এতে প্রচুর পদ্ধতি রয়েছে, যার কয়েকটি ডিওএম পদ্ধতির মতো একই সিনট্যাক্সযুক্ত, কিছু আলাদা; আপনাকে সত্যই বস্তুটি ম্যানুয়ালি অতিক্রম করতে হবে না। সেখানে কোনও ডক্স নেই, তবে উত্স কোডটি অত্যন্ত পরিষ্কার - এটি আপনার প্রত্যাশার মতোই কাজ করে।
এএসপি

এখনও না, কিন্তু আপনি এটি প্রসারিত করা বন্ধ করে দেয় কি? এটি ইতিমধ্যে যে ক্রিয়াকলাপগুলি ব্যবহার করে তা ব্যবহার করা এত কঠিন নয়।
এএসপি

2

যে কোনও বাস্তব পর্দা স্ক্র্যাপিং ধরণের জিনিস করতে jsdom খুব কঠোর, তবে সুন্দরসুপ খারাপ মার্কআপে চোট দেয় না।

নোড-স্যুপ সিলেক্ট অজগরটির সুদর্শন একটি নোডেজগুলিতে একটি বন্দর এবং এটি সুন্দরভাবে কাজ করে


0

নভেম্বর 2020 আপডেট

আমি শীর্ষ নোডজেএস এইচটিএমএল পার্সার লাইব্রেরি অনুসন্ধান করেছি।

যেহেতু আমার ব্যবহারের ক্ষেত্রে অনেকগুলি বৈশিষ্ট্যযুক্ত একটি লাইব্রেরির প্রয়োজন ছিল না, আমি স্থিতিশীলতা এবং কার্য সম্পাদনের দিকে মনোনিবেশ করতে পারি।

স্থিতিশীলতার দ্বারা আমি বোঝাতে চাইছি যে বাগগুলি খুঁজে পেতে গ্রন্থাগারটি সম্প্রদায় দ্বারা দীর্ঘায়িতভাবে ব্যবহার করা উচিত এবং এটি এখনও বজায় রাখা হবে এবং উন্মুক্ত সমস্যাগুলি বন্ধ হয়ে যাবে।

তার কঠিন একটি ওপেন সোর্স লাইব্রেরি ভবিষ্যত বুঝতে, কিন্তু আমি সবচেয়ে ব্যবসাসফল 10 টি লাইব্রেরি উপর ভিত্তি করে একটি ছোট সারসংক্ষেপ করেনি openbase

আমি সর্বশেষ প্রতিশ্রুতি অনুসারে 2 টি গ্রুপে বিভক্ত হয়েছি (এবং প্রতিটি গ্রুপে গিথুব শুরু অনুসারে ক্রম হয়):

সর্বশেষ প্রতিশ্রুতি গত 6 মাসে হয়:

jsdom - Last commit: 3 Months, Open issues: 331, Github stars: 14.9K

htmlparser2 - Last commit: 8 days, Open issues: 2, Github stars: 2.7K

parse5 - Last commit: 2 Months, Open issues: 21, Github stars: 2.5K

swagger-parser - Last commit: 2 Months, Open issues: 48, Github stars: 663

html-parse-stringify - Last commit: 4 Months, Open issues: 3, Github stars: 215

নোড-এইচটিএমএল-পার্সার - Last commit: 7 days, Open issues: 15, Github stars: 205

শেষ প্রতিশ্রুতি 6 মাস বা তার বেশি:

চেরিও - Last commit: 1 year, Open issues: 174, Github stars: 22.9K

কোয়া-বডিপারসার - Last commit: 6 months, Open issues: 9, Github stars: 1.1K

sax-js - Last commit: 3 Years, Open issues: 65, Github stars: 941

খসড়া থেকে html - Last commit: 1 Year, Open issues: 27, Github stars: 233


আমি নোড-এইচটিএমএল-পার্সারটি বেছে নিয়েছি কারণ এ মুহূর্তে এটি শান্ত এবং দ্রুত সক্রিয় বলে মনে হচ্ছে।

(*) ওপেনবেস প্রতিটি লাইব্রেরি সম্পর্কিত অবদানকারীদের সংখ্যা (+3 কমিট সহ), সাপ্তাহিক ডাউনলোড, মাসিক কমিট, সংস্করণ ইত্যাদি সম্পর্কিত আরও অনেক তথ্য যুক্ত করে।

(**) উপরের টেবিলটি নির্দিষ্ট সময় এবং তারিখ অনুসারে একটি স্ন্যাপশট - আমি আবার উল্লেখটি পরীক্ষা করে দেখতে পারি এবং প্রথম পদক্ষেপ হিসাবে সাম্প্রতিক ক্রিয়াকলাপের স্তরটি যাচাই করে এবং তারপরে আরও ছোট বিবরণে ডুব দেব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.