2016-08-27 5 views
2

私はいくつかのアニメのエピソードをダウンロードするプロセスを自動化するアプリケーションを構築しようとしています。これまでのところ、私は次のコードを使用してのエピソードのリンクを見つけることができました:セレンのクロムドライブを使用してテーブル内にアンカータグを見つける

def get_episodes(driver): 
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//a[contains(@title,'Episode')]"))) 
    episodes = driver.find_elements_by_xpath("//a[contains(@title,'Episode')]") 
    del episodes[-1] 
    episodes = list(reversed(episodes)) 
    return episodes 

をしかし、最近私がいないすべてのエピソードは、そのリンクテキストに単語「エピソード」を含むことが判明しました。そのように、私はエピソードへのすべてのリンクを取得する別の方法を把握しようとしています。ページの基本構造には表があり、各リンクは<td>要素内にあります。

私はすべてのtd要素を集めてから、CSSセレクタを使って子どもを育てることを考えました。それにもかかわらず、目に合っている要素よりも多くの要素があるため、これは機能しません。

参考のためexample pageです。私はセレンが関係しているので、そのAPIにはあまりよく知られていない限り、ノブですので、私が探しているものは正確にはわかりません。どんな提案も感謝しています。

答えて

0

あなたは正しい軌道に乗っているが、あなたは上-考え、このビットであってもよいです。なぜ私たちが知っているテーブルに、エピソードがあるのをターゲットにしていないのですか?リストの理解度を使ってすべてのエピソードリンクを取得してください。

def get_episodes(): 
    episode_table = driver.find_element_by_class_name('listing') 
    episode_links = [i.get_attribute('href') for i in episode_table.find_elements_by_tag_name('a')] 
    print(episode_links) 

    >>>['http://kissanime.to/Anime/Death-Note-Dub/Episode-037?id=97557', 'http://kissanime.to/Anime/Death-Note-Dub/Episode-036?id=97556', 'http://kissanime.to/Anime/Death-Note-Dub/Episode-035?id=97555', 'http://kissanime.to/Anime/Death-Note-Dub/Episode-034?id=97554',etc..] 
+1

優秀!ご協力ありがとうございました :) – VlassisFo

1

は、あなたのXPathは、より具体的にするために試してみてください。

//tr/td/a[starts-with(@href,'/Anime/')] 
関連する問題