سؤال

أنا جديد على التعبيرات العادية وأشياء من هذا القبيل.ليس لدي سوى القليل من المعرفة وأعتقد أن مشكلتي الحالية تتعلق بهم.

لدي صفحة ويب تحتوي على نص.أريد الحصول على روابط من صفحة الويب الموجودة فقط في SPANالتي لديها class="img".

أذهب من خلال تلك الخطوات.

  1. الاستيلاء على كل SPANتم وضع علامة عليها بالفئة "img" (هذه هي الخطوة الصعبة التي أبحث عنها)
  2. تحرك تلك SPANs إلى متغير جديد
  3. قم بتحليل المتغير للحصول على مصفوفة تحتوي على الروابط (Each SPAN يحتوي على رابط واحد فقط، لذلك سيكون هذا سهلاً)

أنا أستخدم PHP، ولكن لا يهم أي لغة أخرى، أبحث عن كيفية التعامل مع الخطوة الأولى.هل لدى أحد اقتراح؟شكرا

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

المحلول

استخدم PHP DOMDocument-فئة بالاشتراك مع DOMXPath-class للانتقال إلى العناصر التي تحتاجها، مثل هذا:

<?php
$dom = new DOMDocument();
$dom->loadHTML(file_get_contents('http://foo.bar'));
$xpath = new DOMXPath($dom);

$elements = $xpath->query("/html/body//span[@class='img']//a");foreach ($ elements as $ a) {echo $ a-> getAttribute ('href') ، " n" ؛}

يمكنك معرفة المزيد حول لغة XPath على صفحة W3C.

نصائح أخرى

نمط مثل <span.* class="img".*>([^<]*)</span> يجب أن تعمل بشكل جيد.، بافتراض أن الكود الخاص بك يبدو مثل

<span class="img">http://www.img.com/img.jpg</span>
<span alt="yada" class="img">animage.png</span>
<span alt="yada" class="img" title="still works">link.txt</span>
<span>not an img class</span>


<?php

$pattern = '@<span.* class="img".*>([^<]*)</span>@i';

//$subject = html code above

preg_match_all($pattern, $subject, $matches);

print_r($matches);

?>

أنا أستخدم PHP ، لكن أي لغة أخرى لا يهم ، أنا أبحث عن كيفية التعامل مع الخطوة الأولى.أي شخص لديه اقتراح؟

نحن إي إل...

import urllib
from BeautifulSoup import BeautifulSoup, SoupStrainer

html = urllib.urlopen(url).read()
sieve = SoupStrainer(name='span', attrs={'class': 'img'})
tag_soup = BeautifulSoup(html, parseOnlyThese=sieve)
for link in tag_soup('a'):
    print link['href']

(هذا هو بيثون، وذلك باستخدام حساء جميل - يجب أن تعمل على معظم المطبوعات، سواء كانت جيدة التشكيل أم لا).

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