1

クラスの最初の使用が必要な場合、find_elements_by_xpath() を推測する必要はありません。これにはどのようなオプションがありますか? 目標は、コードの記述を減らし、スクレイピングしているソースへの変更を簡単に修正できるようにすることです。本質的に可能ですか

find_elements_by_css_selector('source[1]') 

ただし、このコードはそのままでは機能しません。

私はPythonでセレンを使用しており、ファントムJSをWebドライバーとして使用する可能性があります(テスト用のFirefox)。

4

1 に答える 1

3

CSS Selectorsでは、角括弧が属性を選択するため、サンプル コードは 1 という名前の属性を持つ 'source' タイプ要素を選択しようとしています。

<source 1="your_element" />

私が収集しているのに対し、次のようなリストの最初のものを見つけようとしています:

<source>Blah</source>
<source>Rah</source>

最初に一致する要素だけが必要な場合は、単数形を使用できます。

element = find_element_by_css_selector("source")

使用していたフォームはリストを返すため、n-1 番目の要素を取得してページの n 番目のインスタンスを見つけることもできます (リスト インデックスは 0 から):

element = find_elements_by_css_selector("source")[0]

最後に、CSS セレクターが検出する要素を完全に明示したい場合は、nth-of-typeセレクターを使用できます。

element = find_element_by_css_selector("source:nth-of-type(1)")

Sauce Labs のこのブログ投稿で、XPath を置き換える柔軟なセレクターを作成するのに役立つその他の役立つ情報を見つけることができます。

于 2013-08-04T05:11:33.233 に答える