環境:python3.6
庫:pip3 install win32gui
另外需要安裝chromedriver插件,安裝方式:https://blog.csdn.net/t8116189520/article/details/95173975
本篇主要講述的是如何通過selenium上傳圖片到1688,然後獲取同類型商品數據
1.第一步:打開https://www.1688.com/,點擊相機圖標
2.第二步:定位彈出的系統窗口,並輸入圖片路徑,搜索同產品
第三步:獲取頁面數據
代碼實現如下:
from selenium import webdriver
import win32gui
import time
import win32con
driver = webdriver.Chrome()
# 全屏顯示
driver.maximize_window()
driver.get('https://www.1688.com/') # 獲取1688頁面
time.sleep(2)
# 將彈框叉掉
try:
input = driver.find_element_by_xpath("//div[@class='home-identity-dialog']/span[@class='identity-close']/i[@class='identity-icon identity-close-icon']")
input.click()
except:
pass
# 點擊相機標籤,彈出上傳文件窗口
input_2=driver.find_element_by_xpath("//span[@class='sm-widget-picbtn']/em[@class='pic-icon']")
input_2.click()
time.sleep(0.5)
uploadwindow = win32gui.FindWindow('#32770', "打開") # 定位“文件上傳 窗口;窗口名稱“打開”
time.sleep(0.5)
# print '1',uploadwindow
# 最後輸出,如果輸出0說明定位失敗了
parent = win32gui.FindWindowEx(uploadwindow, None, 'ComboBoxEx32', None)
# print '2',parent
Combobox_real = win32gui.FindWindowEx(parent, None, 'ComboBox', None)
# print '3',Combobox_real
Edit_box = win32gui.FindWindowEx(Combobox_real, None, 'Edit', None)
# print '4',Edit_box
# 這段代碼是先定位到最上層的父窗口,再逐層定位到輸入框(chrome於FF有所不同,FF下可以直接定位)
url_c =r'C:\Users\admin\Desktop\221100.jpg'
win32gui.SendMessage(Edit_box, win32con.WM_SETTEXT, None, url_c)
openbuttonname = u'打開(&O)'
openbutton = win32gui.FindWindowEx(uploadwindow, None, "Button", openbuttonname) # 定位“保存”按鈕
win32gui.PostMessage(openbutton, win32con.WM_LBUTTONDOWN, win32con.MK_LBUTTON, 0)
win32gui.PostMessage(openbutton, win32con.WM_LBUTTONUP, win32con.MK_LBUTTON, 0)
time.sleep(2)
# 獲取商品offer_id 並打印
a=0
while True:
a+=1
offer="offer"+str(a)
try:
category_data=driver.find_element_by_xpath('//*[@id="%s"]'%offer)
category_id= category_data.get_attribute('offerid')
print(category_id)
except:
break
運行結果: