90198


以下のような２つのデータフレームから各URLのIDと一致するtxtを抜き出して`find_element(By.LINK_TEXT)`に入れ込むようなことは可能でしょうか？df2のtxt部分は重複する場合もあります。よろしくお願い致します。

* * *

**df1:**

[code]

    URL ID
    aaa 1
    bbb 2
    ccc 3
    ddd 4
    ... ...
    
[/code]

**df2:**

[code]

    ID txt
    1  xxx
    2  yyy
    3  zzz
    4  xxx
    ... ...
    
[/code]


CC BY-SA 4.0
2022-07-25T13:18:46.530
90189
2022-07-26T06:20:23.343
2022-07-26T04:20:32.960
51596
53678
question
python pandas selenium
find_element(By)にURLによって変わる要素を入れたい


`df1`と`df2`を[merge](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.merge.html)して結合することで、IDが一致するtxtを抜き出すことができます。  
下記サンプルコードの`merge_sample`関数では、結合後のデータフレームから[iterrows](https://pandas.pydata.org/pandas-
docs/stable/reference/api/pandas.DataFrame.iterrows.html)を使ってURLとtxtを1行ずつ読み込んで処理しています。

**サンプルコード**

[code]

    def merge_sample(df1, df2):
        # df1とdf2をマージする
        df = pd.merge(df1, df2, on=["ID"], how="inner")
        for _, row in df.iterrows():
            # df1のURLを呼び出す
            print(f'driver.get("{row["URL"]}")')
            # df2のtxtを取得する
            print(f'driver.find_element(By.LINK_TEXT, "{row["txt"]}")')
    
    # 前準備
    import pandas as pd
    from io import StringIO
    
    s1 = """ 
    URL ID
    aaa 1
    bbb 2
    ccc 3
    ddd 4
    """ 
    io1 = StringIO(s1)
    df1 = pd.read_csv(io1, sep=" ")
    
    s2 = """ 
    ID txt
    1 xxx
    2 yyy
    3 zzz
    4 xxx
    """ 
    io2 = StringIO(s2)
    df2 = pd.read_csv(io2, sep=" ")
    
    merge_sample(df1, df2)
    
[/code]

**実行結果**

[code]

    driver.get("aaa")
    driver.find_element(By.LINK_TEXT, "xxx")
    driver.get("bbb")
    driver.find_element(By.LINK_TEXT, "yyy")
    driver.get("ccc")
    driver.find_element(By.LINK_TEXT, "zzz")
    driver.get("ddd")
    driver.find_element(By.LINK_TEXT, "xxx")
    
[/code]


CC BY-SA 4.0
2022-07-26T06:20:23.343
90198
2022-07-26T06:20:23.343
9820
90189
answer