2016-06-23 5 views
0

ウェブサイトからテキストや画像を収集して、不足している人物を集めるのに役立ちます。ここに問題があります:セレンは2つのdivを持つすべての要素を見つけます

一部のつぶやきはイメージを持たないので、対応する<div class='c' ....>は1つだけ<div>...</div>を持っています。次のコードに示すように 一部のツイートがイメージを持っているので、対応する<div class='c' ....>は、2 <div>...</div>があります

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

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

私はすなわち見つける、つぶやきはイメージを持っているかどうかを確認する予定対応する<div class='c' ....>に2つの<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を見つけるだろう、私はテキストを一致させることは不可能になるだろうと思いますその事実の後、関連する画像と一緒に。私は別のアプローチを提案します。テキストとオプションの画像の両方を含む<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]を指定し、指定されたidでdivを見つけ、画像でdivを含むことをお勧めします。

しかし、あなたの質問に直接答える:

//div[./div[2] and not(./div[3])]は別途テキストや画像を収集することにより、正確に2 divの子供

関連する問題