2017-12-27 10 views
0

私はScopusのウェブサイトから私の義務的なデータを集め、それを "s"という名前のリストに保存しました。しかし、すべてのデータはs [1]に保存されています。私のコードはWeb要素がリストの1つの要素にあるのはなぜですか?

s=[] 
document=driver.find_elements_by_xpath("""//*[@id="srchResultsList"]/tbody""") 
for i in document: 
    s.append(i.text) 

どうすればいいですか?私はPython 2.7でセレンパッケージを使用しました。

+3

あなたがtr' 'を反復処理する必要があるテーブルのデータを取得する必要がある場合(行)と' td'(列)なしimediate結果を受け入れない 'tbody' –

+0

ページへのリンクを投稿し、あなたが探しているものについて詳しく説明してください。関連するHTMLの例、HTMLから得ることを期待するもの、そしてそのHTMLを取得するために使用しているコードを挙げてください。 – JeffC

答えて

1

tbodyテーブルタグを照会しようとしています。それは理由ではない?一般に、テーブル内にはtbodyタグしかなく、ユニークな要素になります。

varにすべてのtr要素、またはすべてのtd要素、またはそれらの内部の別の種類のタグを返して保存しようとしている場合、あなたは教えてくれませんでしたが、返すものは何でもセレクターを変更します。

のは、あなたのXPathはそれの内部IWebElementsのトンでTBODY要素を返すことを想像してみましょう:TR、TD、スパン...しかし、あなたのセレクタは内の要素だけTBODY要素のためではない求めています、それを手に入れますか?

xpathを//*[@id="srchResultsList"]/tbody/trに変更しようとすると、すべてのtr要素がexeptヘッダーtrになります。

また、次のxpath //*[@id="srchResultsList"]/tbody//tdを使用して、必要なすべてのtd要素を返すことができます。

あなたはtbodyの内部のすべてのTRとTD要素が必要な場合は別のケースでは、あなたはその方法を照会することができます //*[@id="srchResultsList"]/tbody/tr | //*[@id="srchResultsList"]/tbody//td

あなたはまた、あなたが望むものすべての要素を返すようにsubqueryesを変更または作成することができますが、必要セレクタでそれを指定するには:セレンはちょうど子供

+0

完全な答えをありがとう。あなたの応答はうまくいきます。しかし、リストのインデクシングに間違いがあります。私は200ルーのリストを持っていなければならないが、リストには202ローがある。これについてあなたの意見は何ですか? –

+0

私はちょうどあなたが欲しいものを理解する必要があります:セレン内の戻り値が間違っていますか?または、特定の量の要素を取りたいと思っていますか? –

+0

とにかく、いつでもchromeコンソールウィンドウを使って、あなたのすべてのxpathとcssSelectorsをテストすることができます。 '$(" your-css-selector ")'や '$ x(" your-xpath ")'を使ってみてください。他のブラウザがxpathセレクタをサポートしているかどうかは、jsやjqueryではなくコンソール機能であるため、私は知らない。しかし、クロムは確かにサポートしています –

関連する問題