2016-06-23 3 views
0

Я пытаюсь собрать тексты и изображения с веб-сайта, чтобы помочь собрать пропавшие без вести твиты. Вот проблема:Selenium найдет все элементы, которые имеют два divs

В некоторых твитах нет изображений, поэтому соответствующий <div class='c' ....> имеет только один <div>...</div>. Некоторые твиты имеют изображения, поэтому соответствующие <div class='c' ....> имеет два <div>...</div>, как показано в следующих кодов:

<div class='c' id="M_D*****"> 
    <div>...</div> 

и

<div class='c' id="M_D*****"> 
    <div>...</div> 
    <div>...</div> 

Я намерен проверить, имеет ли твит изображение, то есть выяснить, имеет ли соответствующий <div class='c' ....> два <div>...</div>.

PS: Следующие коды используются для сбора всех текстов и URL-адресов изображений, но не у всех твитов есть изображения, поэтому я хочу их сопоставить, решая вышеуказанную проблему.

tweets = browser.find_elements_by_xpath("//span[@class='ctt']") 
graph_links = browser.find_elements_by_xpath("//img[@alt='img' and @class='ib']") 

Это общественная программа социального обеспечения, цель которой - помочь пропавшим людям вернуться домой.

+0

Если это общедоступный сайт, можете ли вы поделиться страницей с нами? – JeffC

ответ

0

Собрав текст и изображения отдельно, я думаю, что это будет невозможно соответствовать тексту с соответствующим изображением после факта. Я бы предложил другой подход. Я бы искал <div class='c'...>, который содержит как текст, так и необязательное изображение. После того, как у вас есть «контейнер» DIV, вы можете получить текст и посмотреть, существует ли изображение и объединить его. Без соответствующего HTML-кода вам, возможно, придется подстроить код ниже, но он должен дать вам представление о том, как подойти к этому.

containers = browser.find_elements_by_css_selector("div.c") 
for container in containers: 
    print container.find_element_by_css_selector("span.ctt").text // the tweet text 
    images = container.find_elements_by_css_selector("img.ib") 
    if len(images) > 0 // see if the image exists 
     print images[0].get_attribute("src") // the URL of the image 
    print "-------------" // separator between tweets 
0

html, который вы указали, вероятно, недостаточно, но, основываясь на нем, я предлагаю xpath: //div[@id='M_D*****' and ./div//img], которые находят div с указанным id и содержат div с изображением.

Но прямой ответ на ваш вопрос:

//div[./div[2] and not(./div[3])] будет найти все дивы с ровно 2 Дивых детьми

Смежные вопросы