غير تافهة التحديدات الشاشة تجريف باستخدام pQuery
-
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 ')] / بعد-الأخوة :: ض'