

python・プログラミング初めて3日ほどのド初心者です。  
今回、Python・SeleniumでのWebスクレイピングに挑戦しております。

質問に際して、至らない点ございましたら、申し訳ございません。

### 実現したいこと

next_page_url_all → 「次のページ」をクリックした際に表示されるをURLを事前に取得しています。（リスト）  
このnext_page_url_allに入っているURLを巡回し、各ページ内に記載の詳細ページへのリンクURLを取得していきたい。

というのが目標となります。

### 解決できない点

1つ目のURL → 2つ目のURL → 3つ目のURL ・・・ と巡回していき、  
detail_url_all に、detail_url.get_attribute("href")で取得したURLをappendしているのですが、  
実行後、detail_url_allの中身を見ると、最後のページで取得したURLしか入っていません。

1ページ目 → 2ページ目 → 3ページ目 と順次実行する中で、  
毎回、上書きされてしまっている感じがします。

これを回避する方法はありますでしょうか？

extendを使ってみましたが、結果は同様でした。

リストの中身を見ると、最後のページで取得した結果のみが入っており、  
extendでは、一文字ずつ区切られるだけで、同様の結果となりました。

appendの結果：

[code]

    ['http://example.jp','http://example.jp']
    
[/code]

extendの結果：

[code]

    ['h','t','t','p',':','/','/','e','x','a','m','p','l','e','.','j','p','h','t','t','p',':','/','/','e','x','a','m','p','l','e','.','j','p']
    
[/code]

### 書いたコード

[code]

    detail_url_all=[]
    
    for url in next_page_url_all:
        driver.get(url)
        detail_url = driver.find_element_by_class_name('class1').find_element_by_class_name('class2').find_element_by_tag_name('a')
        detail_url_all.append(detail_url.get_attribute("href"))
    
[/code]


CC BY-SA 4.0
2021-05-15T15:06:32.693
75854
2021-05-18T08:32:57.150
2021-05-15T16:42:26.463
2238
question
python selenium
for文でのappendについて


対象となるurlや実行結果がないので断定はできませんが、YuuGさんの用いている`find_element_by_class_name`
メソッドでは、ページ内の一つの要素しか取得することができずそのせいで上書きされているように見えているのだと思います。

代わりに `find_elements_by_class_name` メソッドや `find_elements_by_xpath`
メソッドを使うことで解決するかと思われます。[こちら](https://ai-inter1.com/python-
selenium/)のサイトが参考になります。


CC BY-SA 4.0
2021-05-18T07:28:28.427
75918
2021-05-18T08:32:57.150
2021-05-18T08:32:57.150
3060
45370
75854
answer