Он распечатывается в научном c формате нотации
Кажется, у вас есть такие числа, как UP C и EAN. Вероятно, вы можете решить эту проблему, пометив числа как текст. Если вам нужно всегда иметь длину 13, вы можете исправить это, добавив нули в начале.
Хотите прекратить что-то делать, когда его nan
в excel
Самое простое решение можно использовать ввод и принять любой символ для продолжения выполнения вашего кода. Но если вы хотите иметь несколько секунд, time.sleep()
тоже хорошо
Скопируйте UPC [i] в поиск Google, но я хотел скопировать только один раз, потому что я хочу создать его, откройте новый затем скопируйте второй UPC [i]
Некоторые моменты, которые вы можете пересмотреть:
- Итерация в python может быть выполнена с помощью
enumerate()
, если вам нужно значения индекса. Если вам не нужен индекс, вы можете просто отказаться от него. for value in data_frame['UPC']:
- С помощью селена вы можете напрямую очищать результаты вместо использования новых вкладок.
Ниже вы можете проверить рабочий пример (по крайней мере, на моей машине с python3
, w10
и chrome exe driver
).
import pandas as pd
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.keys import Keys
# Settings
pd.set_option('display.width', 10, 'display.max_rows', 10, 'display.max_colwidth', 100, 'display.width', 10,
'display.float_format', lambda x: '%0.2f' % x)
data_frame = pd.read_excel('test.xlsx', sheet_name='products id', skip_blank_lines=False)
# I have chrome driver in exe, so this is how I need to inject it to get driver out
driver = webdriver.Chrome('chromedriver.exe')
google = 'https://www.google.com'
for index, value in enumerate(data_frame['UPC']): # named the column in excel file
if pd.isna(value):
print('{}: zzz'.format(index))
sleep(2) # will sleep for 2 seconds, use input() if you want to wait indefinitely instead
else:
print('{}: {} {}'.format(index, value, type(value)))
# since given values are float, you can convert it to int
value = int(value)
driver.get(google)
google_search = driver.find_element_by_name('q')
google_search.send_keys(value)
google_search.send_keys('\uE007') # this is "ENTER" for committing your search in google or Keys.ENTER
sleep(0.5)
# you may want to wait a bit before page loads fully, then scrape info you want
# also consider using try-except blocks if something unexpected happens
# if you want to open new tab (windows + chrome driver)
# open a link in a new window - workaround
helping_link = driver.find_element_by_link_text('Help')
actions = ActionChains(driver)
actions.key_down(Keys.CONTROL).click(helping_link).key_up(Keys.CONTROL).perform()
driver.switch_to.window(driver.window_handles[-1])
# close your instance of chrome driver or leave it if you need your tabs
# driver.close()