غير تافهة التحديدات الشاشة تجريف باستخدام pQuery

StackOverflow https://stackoverflow.com/questions/1804793

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا باستخدام pQuery (ميناء بيرل من مسج) لتحديد العناصر واسترداد النص من وثيقة HTML.

والنظر في العلامات التالية:

<x>
   <y>code1</y>
   <z>stuff</z>
   <y>code2</y>
   <z>foobar</z>
</x>

ورمز pQuery التالية:

my $target_value = pQuery($markup)->find($pquery_selector)->text;

وأنا أحاول صياغة $pquery_selector بحيث يطابق <z>foobar</z> في العلامات أعلاه باستخدام القاعدة التالية: العثور على z العنصر الذي يتبع بعد y العنصر الذي لديه الجسم تحتوي على "code2". في حين أن هذا من الممكن استخدام مسج أنا لست متأكدا من ان بناء الجملة pQuery من القوة ما يكفي للتعامل مع مثل هذا التعبير.

هل هذا النوع من الاختيار ممكن باستخدام بناء الجملة pQuery؟

هل كانت مفيدة؟

المحلول

في مسج قد يكون من الممكن كتابة محدد مثل 'ص: يحتوي على (CODE2) + ض'. ومع ذلك، pQuery لا يزال غير مكتمل (اعتبارا من النسخة 0.07)، ومحدد مثل س + Z فقط يعطي خطأ مما يدل على أن المطور حدة لم حصلت في جميع أنحاء لترجمة هذا الجزء من قانون مسج.

ومنذ لم تطرق pQuery منذ عام 2008، وأوصى إما إصلاح ذلك بنفسك (رمز على كبان وجيثب)، أو باستخدام وحدة أكثر نضجا مثل HTML :: :: TreeBuilder كسباث (التي لا تتطلب التعلم تركيب كسباث، ولكن في الواقع يعمل لأشياء غير تافهة).

وأي ما يعادل كسباث من أن ما سبق مسج محدد يكون '// ذ [يحتوي على (النص ()،' CODE2 ')] / بعد-الأخوة :: ض'

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top