2017-12-24 7 views
0

なぜ__index__方法のpythonを持っている必要があります:ウィキのはTypeError:スライスインデックスが整数またはNoneであるか、または

k = driver.find_elements_by_class_name("#mw-content-text > div > p:nth-child(3) > b:nth-child(1)")[0:6] 

作業

しかし

数6(別名titles.text)が

を与えます
k = driver.find_elements_by_class_name("#mw-content-text > div > p:nth-child(3) > b:nth-child(1)")[0:titles.text] 

エラー:

TypeError: slice indices must be integers or None or have an __index__ method 

どうすればこの問題を回避できますか?なぜそれがこの

それはintへ

cd = webdriver.chrome() 
cd.get('https://en.wikipedia.org/wiki/6') 
titles = driver.find_elements_by_class_name("#mw-content-text > div > p:nth-child(3) > b:nth-child(1)") 
for title in titles: 
    print(title.text) 

変更コード(titles.textを)やっていることは、コメントによると、すべての要素

+0

エラーが発生する行にはどのような処理が必要ですか? –

+0

@MichaelButscher私はそれが6つの要素を掻き集めることを期待しています。 –

+0

'titles.text'は文字列です。それは '' 6''を含んでいますか?その場合は、 'int(titles.text)'を使用してください。 –

答えて

0

の印刷を与え、それがtitles.textの値であることのように見えますまず、文字列(したがってスライスインデックスとして使用することはできません)は1 of 6に等しくなります。つまり、変換のために直接int()に渡すことはできません。

6を文字列から抽出する場合は、まず文字列をofで分割し、最後の要素を取得します。次に、整数に変換する必要があります。

max_pages = int(titles.text.split(" of ")[-1]) 

k = driver.find_elements_by_class_name("#mw-content-text > div > p:nth-child(3) > b:nth-child(1)")[:max_pages] 
関連する問題