2017-06-14 8 views
0

検索エンジンからのリンクをプルするためにセレンを使用しています。以下でわかるように、私は "cvDict"の一意のキーに各リストの値を追加しています。リストインデックスが検索エンジンのスクレイピングURLの範囲外です

問題:これらの検索では20件の検索結果が表示されない場合があります(検索クエリのデータがより稀であり、20を超えるクエリを供給できません)。私は何を説明しようとしているのか知っていると確信しています。ただ私がすべての自分の基地をカバーしていることを確認したい。

検索クエリの結果が20件未満で、エラーが発生した場合にエラーを発生させないようにするには、どのような種類の文/関数を記述できますか?

1から20の範囲の1つずつのif/elif文(または何かの並べ替え)を20個書く必要がありますか?結果がそれらのいずれかを満たしていることを確認しますか?

cv = [] 
     bbb = self.driver.find_elements_by_class_name('user-name') 
     # while True: 
     for plink in bbb: 
cv.append(plink.find_element_by_css_selector('a').get_attribute('href')) 




    self.cvDict = {'one': cv[1], 
        'two': cv[2], 
        'three': cv[3], 'four': cv[4], 'five': cv[5], 
        'six': cv[6], 'seven': cv[7], 
        'eight': cv[8], 'nine': cv[9], 'ten': cv[10], 
        'eleven': cv[11], 'twelve': cv[12], 'thirteen': cv[13], 'fourteen': cv[14], 
        'fifteen': cv[15], 'sixteen': cv[16], 'seventeen': cv[17], 'eighteen': cv[18], 
        'nineteen': cv[19], 
         } 

あなたは間隔が奇妙である理由、それは私が、私は9つの検索結果を取得していたときに、キーと値のペアの1つか2つをコメントアウトし、辞書に設定された10のキーと値のペアを持つことができます迷っている場合(たとえば)そのエラーを発生させます。私はあなたの質問を理解したよう

答えて

0

、あなたは未知の長さ(20未満)のリストcvを持っていて、簡単な方法は、リストにあなたの鍵を定義することですカスタムキー

で辞書にそれをプッシュします

keys = ["one", "two", "three"] 

して、長さをcvと一緒に圧縮し、それのうちの辞書を作る

cvDict = dict(zip(keys, cv)) 

CVのは

keys = ["one", "two", "three"] 
cv = ["something", "something else"] 
cvDict = dict(zip(keys, cv)) 

は、CVは長くなるならば、それは短いリストの長さに短縮されます、キーと

{'one': 'something', 'two': 'something else'} 

同じものを生産する限りkeysようにする必要はありません。

+0

「zip」はこちらのキーワードになります。私はすぐにそれを試してみましょう、あなたに知らせるが、これがそれをしなければ私はショックを受けるだろう。それを試しにポンプ!私はああ知らせます。 編集:ありがとう!笑 –

+0

確かに。ばっちり成功。問題は初心者でしたが、私のコーディングの問題を、あなたのような人々が直接的かつ完全な解決策を提供する方法で明確に表現できることは、まさに素晴らしい気分です。学習曲線の中で最も難しい部分だと思います。ありがとう、Derte! –

関連する問題