سؤال

أتساءل عما إذا كانت هناك أي مكتبات موجودة في Objective-C أو يمكن الوصول إليها من خلالها والتي من شأنها أن تسمح لي باستخراج الصفحات المنسقة مثل هذا.وعلى وجه التحديد، كافة التواريخ وكل النص الموجود بجانب كل تاريخ.إذا لم يكن الأمر كذلك، ما هي أفضل طريقة للقيام بذلك؟التعبيرات العادية؟سمعت ان NSString قد يكون لديك بالفعل طرق مدمجة لهذا الغرض.هل هذا صحيح؟

كنت أبحث حولي لأرى ما إذا كان هناك أي بديل للاستخراج، مثل ملف XML أو واجهة برمجة التطبيقات (API).لقد عثرت على واجهة برمجة التطبيقات (API) ولكن العملاء الوحيدين الذين أراهم متاحين موجودون بلغات أخرى ويبدو أنهم قادرون فقط على نشر المحتوى على الصفحات، وليس استرداده.

يحرر:لذلك وجدت المزيد من المعلومات بخصوص واجهة برمجة التطبيقات (API) على هذه الروابط:

وكنت قادرا على التوصل إلى ذلك هذا الطلب الذي يقوم بإرجاع بعض النصوص المشفرة بتنسيق HTML (حسنًا، التنسيق هو XML، ولكنه يتضمن نص الصفحة مثل »a href= إلخ.سأستمر في البحث في المستندات لمعرفة ما إذا كان بإمكاني جعل هذا الأمر أفضل قليلاً، وإذا لم يكن الأمر كذلك، فهل هناك أي توصيات بشأن تحليل هذا؟

تحرير 2:حسنا شكرا ل صفحة الوثيقة هذه, ، إن الطريقة الأبسط والأنظف التي تمكنت من خلالها من استرداد البيانات هي استخدام هذا الرابط المبني الذي يقوم بإرجاع البيانات الأولية (في ترميز الويكي) من القسم ذي الصلة.ومع ذلك، أعتقد أنني سأحتاج بعد ذلك إلى تحليل ذلك، على الرغم من أنه إذا كان الأمر كذلك بالفعل، فيجب أن يكون الأمر أسهل كثيرًا من المقالة بأكملها.

هل لدى أي شخص أي توصيات بشأن تحليل ترميز الويكي مثل ما يلي في Objective-C؟

==Events==
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.

ما أريد أن أنتهي منه هو، على ما أعتقد NSDictionary أو مجموعة مماثلة تخزن التاريخ مع مقتطف المعلومات المصاحب.شكرًا!

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

المحلول

سأقترح اقتراح التعبير العادي لاستخراج البيانات المستهدفة في دفق بيانات HTML مختلط.

توجد بالفعل مكتبات RegEx على الهاتف، ولكنها مخفية نوعًا ما - يمكنك كشفها باستخدام بعض المكالمات البسيطة RegexKitLite (تأكد من التمرير لأسفل والحصول على الإصدار الخفيف).ينتهي الأمر بكونه فئة تحتوي على عدد قليل من الامتدادات على NSString التي تتيح لك القيام بالتعبيرات العادية، ثم يمكنك تحديد regex بمطابقتين تم التقاطهما - واحدة للرقم، وواحدة للمحتوى، إلى جانب عدد من التطابقات غير الملتقطة لـ العلامات المرفقة والمتوسطة.على الرغم من أنها نسخة "خفيفة" من RegEX القياسي، إلا أنها تدعم أي قدرة قد تحتاجها.

يعد أسلوب واجهة برمجة التطبيقات (API) واعدًا، ولكن بمجرد حصولك على العلامات الأولية، فمن المحتمل أن تضطر إلى اتباع أسلوب regex مماثل لتحليل البيانات من ذلك.قد يكون الأمر منطقيًا إذا كان يقلل من تعقيد التعبير العادي ووقت نقل البيانات، رغم ذلك، لا يوجد سبب يمنعك من الجمع بين كلا الطريقتين.

نصائح أخرى

أضف &format=fmt إلى نهاية الاستعلام الخاص بك، كما هو موضح في واجهة برمجة التطبيقات: Data_formats.يصبح الاستعلام الخاص بك: استعلام JSON, ، على سبيل المثال.يمكنك تحديد XML أو JSON أو العديد من التنسيقات الأخرى.

يمكنك بسهولة تحليل الأقسام العامة، ثم عرض الإخراج بتنسيق HTML في عرض ويب.

نظرًا لأن الصفحات على ويكيبيديا يتم تخزينها كنص عادي، ويتم إدخالها من قبل المستخدمين كنص عادي، فلن تحصل على مجموعة بيانات منظمة منها.

لقد قمت باستخلاص الكثير من البيانات من WP بطرق مختلفة.يعتمد التنسيق على الكثير من الأشياء بما في ذلك نوع النطاق الفرعي الذي توجد به المعلومات ومتى تم إدخالها.النص الرئيسي هو تنسيق مجاني ولا توجد طريقة بسيطة لكشطه.صناديق المعلومات بتنسيق WP خاص والذي تغير على مر السنين.لم تكن مصممة ليتم كشطها.

هناك قاعدة بيانات تدعم WP وهي أكثر تنظيماً إلى حد ما.

أفضل استراتيجية لديك على الإطلاق هي الاتصال بالويكيبيديين في النطاق الذي ترغب في استخلاصه - سيعرفون تنسيق قاعدة البيانات وقد يكونون قادرين على المساعدة - سيعلمون بالتأكيد يريد للمساعدة لأنهم يريدون رؤية WP في شكل دلالي (مثل DBPedia - http://dbpedia.org/About).

هل تحسب بايثون؟؛) إنها يمكن الوصول إليها من الهدف-C.وهناك وحدات رائعة لأغراض الكشط:صابون جميل و/أو ميكانيكي، يمكنك أيضًا التفكير في lxml.

هذه بالتأكيد ليست الطريقة للقيام بذلك، بأي لغة.

إذا كان هناك أي موقع على الإنترنت سيعرض بياناته بطريقة لطيفة، فسيكون موقع ويكيبيديا.

فكر في الحصول على مقال بتنسيق XML أو RDF أو ربما حتى بتنسيق JSON.

لدي تطبيق iPhone يقوم بكشط الشاشة باستخدام ما يلي:

باستخدام YQL، يمكنك الحصول على أي معلومات تحتاجها من الويب باستخدام استعلامات XPATH مقابل DOM.

أنا شخصياً أعتقد أنه أفضل بكثير من استخدام Regex.ثم مرة أخرى أنا أعرف فقط التعبيرات العادية البسيطة جدًا.

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