কমান্ড-লাইন সিএসএস নির্বাচক সরঞ্জাম


15

প্রশ্ন

কোন সরঞ্জাম (সাধারণত লিনাক্সের জন্য) তার সিএসএস পাথের উপর ভিত্তি করে কোনও এইচটিএমএল উপাদানটির সামগ্রী নির্বাচন করতে পারে?

উদাহরণ

উদাহরণস্বরূপ, নিম্নলিখিত এইচটিএমএল ডকুমেন্টটি বিবেচনা করুন:

<html>
<body>
  <div class="header">
  <h1>Header</h1>
  </div>
  <div class="content">
    <table>
      <tbody>
      <tr><td class="data">Tabular Content 1</td></tr>
      <tr><td class="data">Tabular Content 2</td></tr>
      </tbody>
    </table>
  </div>
  <div class="footer">
  <p>Footer</p>
  </div>
</body>
</html>

কোন কমান্ড-লাইন প্রোগ্রাম (যেমন, এক ধরণের "cssgrep") সিএসএস নির্বাচক ব্যবহার করে মানগুলি আহরণ করতে পারে? এটাই:

cssgrep page.html "body > div.content > table > tbody > tr > td.data"

প্রোগ্রামটি স্ট্যান্ডার্ড আউটপুটে নিম্নলিখিতটি লিখবে:

Tabular Content 1
Tabular Content 2

সম্পর্কিত লিংক

ধন্যবাদ!

উত্তর:


12

ব্যবহার করুন W3C এর টুলস এইচটিএমএল / এক্সএমএল পার্সিং এবং CSS নির্বাচকরা ব্যবহার করে আপনি সামগ্রী আহরণ জন্য। উদাহরণ স্বরূপ:

hxnormalize -l 240 -x filename.html | hxselect -s '\n' -c "td.data"

পছন্দসই আউটপুট উত্পাদন করবে:

Tabular Content 1
Tabular Content 2

240 টি অক্ষরের একটি লাইন দৈর্ঘ্য ব্যবহার নিশ্চিত করে যে দীর্ঘ সামগ্রী সহ উপাদানগুলি একাধিক লাইনে বিভক্ত হবে না। hxnormalize -xকমান্ড একটি সুগঠিত XML দলিল, যার দ্বারা ব্যবহার করা যেতে পারে সৃষ্টি hxselect


2
ম্যাকোস ব্যবহারকারীদের জন্য brew install html-xml-utils,।
আনিসপেটেল

7

সিএসএস সলিউশন

এলিমেন্ট ফাইন্ডার কমান্ড আংশিকভাবে এই কাজটি সম্পাদন করবে:

উদাহরণ স্বরূপ:

elfinder -j -s td.data -x "html"

এটি ফলাফলটি JSON ফর্ম্যাটে রেন্ডার করে, যা নিষ্কাশন করা যায়।

এক্সএমএল সলিউশন

এক্সএমএল :: পল্লব মডিউল ( " sudo apt-get install xml-twig-tools") নামে একটি টুল দিয়ে আসে xml_grepযে, এই শর্তে যে, অবশ্যই যে আপনার HTML সুগঠিত শুধু করতে সক্ষম হয়।

আমি দুঃখিত আমি এই মুহুর্তে এটি পরীক্ষা করতে পারছি না তবে এর মতো কিছু কাজ করা উচিত:

xml_grep -t '*/div[@class="content"]/table/tbody/tr/td[@class="data"]' file.html

2

https://github.com/ericchiang/pup এর একটি সিএসএস-ভিত্তিক ক্যোয়ারী ভাষা রয়েছে যা আপনার উদাহরণের সাথে নিবিড়ভাবে মানায়। আসলে, আপনার ইনপুট সহ, নিম্নলিখিত আদেশটি:

pup "body > div.content > table > tbody > tr > td.data text{}"

সৃষ্টি করে:

Tabular Content 1
Tabular Content 2

পেছনটি text{}HTML ট্যাগগুলি সরিয়ে দেয়।

একটি দুর্দান্ত বৈশিষ্ট্য হ'ল পুরো পথটি দেওয়া দরকার নেই, যাতে আবার আপনার উদাহরণ সহ:

$ pup 'td.data text{}' < input.html
Tabular Content 1
Tabular Content 2

এর একটি সুবিধা pupহ'ল এটি HTML5 পার্স করার জন্য golang.org/x/net/html প্যাকেজটি ব্যবহার করে।


0

নোড জিকুয়ারি এবং একটি নকল ডিওএম দিয়ে এটি করতে পারে।

আমি তার জন্য একটি ডকার চিত্র তৈরি করেছি ( https://hub.docker.com/r/phil294/jquery-jsdom/ ):

docker run --rm -i phil294/jquery-jsdom '$("body > div.content > table > tbody > tr > td.data").text()' < page.html

দ্বিতীয় যুক্তি হ'ল জাভাস্ক্রিপ্ট কোড, সুতরাং আপনি যা চান তা করতে পারেন, সত্যই।

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