Перебираем строки CSV с помощью Pandas, выполняем действие Selenium

#python #pandas #selenium

#python #pandas #selenium

Вопрос:

У меня есть файл CSV, который был создан с использованием Pandas. Ниже приведен вывод из следующего кода:

    test = pd.read_csv('order.csv', header=0)
   print(test.head())

      3  16258878505032
   0  3  16258876670024
   1  3  16258876899400
   2  3  16258876997704
  

Единственные данные, которые мне нужно обработать, — это информация во 2-м столбце и информация в 3-м столбце. Это данные заказа на поставку, где 2-й столбец представляет «количество», а 3-й столбец представляет «артикул».

Мне нужно взять строку 1, столбец 2 и ввести ее в поле ввода с помощью selenium. Мне нужна строка 1, столбец 3 и выполнить действие по выбору артикула на веб-странице. Добавьте товар в корзину и повторите цикл обработки строки 2, строки 3 и т.д.

Я знаю, как написать код selenium для выполнения веб-действий, но не уверен, как написать код pandas / python для выполнения итерации по CSV-файлу по одной строке за раз и как вызывать эти значения. Моя логика была бы следующей.

 read order.csv
    get quantity value and sku value for row (one row at the time)
        visit website, inject quantity value
        remain on website, select sku
        add to cart

        repeat loop until no more rows to process
  

Спасибо за вашу помощь.

Ответ №1:

Сначала используйте параметр names в read_csv , чтобы избежать преобразования первой строки данных в имена столбцов:

 test = pd.read_csv('order.csv', names=['quantity','sku'])
print (test)
   quantity             sku
0         3  16258878505032
1         3  16258876670024
2         3  16258876899400
3         3  16258876997704
  

Поскольку возможна работа с selenium и Web, используйте DataFrame.iterrows или другие циклические решения:

 def func(x):
    q = x['quantity']
    sku = x['sku']
    print (q, sku)
    #add selenium code

df.apply(func, axis=1)
  

Или:

 for i, row in test.iterrows():
    q = row['quantity']
    sku = row['sku']
    print (q, sku)
    #add selenium code