سؤال

أحاول سحب البيانات من موقع ويب باستخدام Objective-C. كل هذا جديد جدًا بالنسبة لي ، لذلك قمت ببعض الأبحاث. ما أعرفه الآن هو أنني بحاجة إلى استخدام XPath ، ولدي غلاف آخر لتلك التي تسمى Hpple لجهاز iPhone. لقد استيقظت في مشروعي.

أنا في حيرة من أمري بشأن طريقة استرداد المعلومات من الموقع. يبدو أنني سأستخدم تعبيرات منتظمة في هذا السطر من الكود:

NSArray * a = [doc search:@"//a[@class='sponsor']"];

هذا مجرد مثال. هل هذه الأشياء في البحث:@"...." التعبير العادي؟ إذا كان الأمر كذلك ، أعتقد أنه يمكنني تطوير مئات الأنماط التي سأحتاجها لبرنامجي لتحليل الموقع (أحتاج إلى الكثير من البيانات) ، لكن هل هناك طريقة أفضل؟ أنا ضائع جدا في هذا. أي مساعدة موضع تقدير.

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

المحلول

المعلمة هي xpath ، وليس تعبيرًا منتظمًا. هذا انهيار:

  • يتم تفسير جميع XPaths بالنسبة إلى عقدة السياق. في هذه الحالة ، إنها عقدة الجذر.
  • // هو اختصار يعني "جميع أحفاد"
  • a يعني "كل الأطفال العقد مع نوع عقدة من "A" "(في HTML ، هذا هو المراسي)
  • [...] يحتوي على فاعل, ، تحسين الذي a كثيرا
    • @ هو اختصار لعقد السمة
    • @class تعني سمة تدعى "فئة"
    • @class='sponsor' يعني سمة الفصل تساوي "الراعي". لاحظ أن هذا لن يتطابق مع العقد مع فئة تحتوي "الراعي" ، مثل <a class="big sponsor" ...>; ؛ يجب أن يكون الفصل مساو.

جميعًا معًا ، لدينا "العقد" التي تنحدر من الجذر الذي يحتوي على فئة مساوية لـ "الراعي".

نصائح أخرى

هذا هو تعبير XPath ، وليس تعبيرًا منتظمًا. يحتوي W3C على مرجع XPath هنا: http://www.w3.org/tr/xpath/. في الأساس ، أنت تبحث عن u003Ca>عناصر مع الفصل "الراعي".u003C/a>

لاحظ أن هذا شيء جيد! التعبيرات العادية سيئة لتحليل HTML.

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