Как найти репрезентативное изображение из HTML с Nokogiri в Ruby on Rails - PullRequest
1 голос
/ 09 сентября 2011

Мне нужно отказаться от использования инструментов командной строки xsltproc для развертывания на Heroku, поскольку они на самом деле их не поддерживают. Похоже, что камень Nokogiri должен работать для всего, что мне нужно, хотя у меня возникают проблемы с поиском репрезентативного изображения из HTML.

То, что я имею в виду под репрезентативным изображением, это первое из всех изображений в каталоге / html / body, которые имеют ": //" в ссылке и не имеют "рекламы". или "объявление" или же "?" в ссылке. Есть ли функция Nokogiri, которая будет делать это, возможно, возвращая массив всех изображений, и я могу фильтровать их, как я хочу?

Ответы [ 2 ]

5 голосов
/ 09 сентября 2011

Следующий XPath должен выбрать изображение, которое соответствует вашим заявленным критериям:

/html/body//img[@src[contains(.,'://') 
                     and not(contains(.,'ads.') 
                             or contains(.,'ad.') 
                             or contains(.,'?')
                            )
                     ]
                ][1]

Вы можете использовать его следующим образом:

doc.xpath("/html/body//img[@src[contains(.,'://') 
       and not(contains(.,'ads.') or contains(.,'ad.') or contains(.,'?'))]][1]")
1 голос
/ 09 сентября 2011

Кажется, вам нужно прочитать о XPath .Вот довольно хороший (и простой) учебник .

...