2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【Python】唯品会购买商品

【Python】唯品会购买商品

时间:2021-11-26 14:46:19

相关推荐

【Python】唯品会购买商品

操作过程:唯品会进入之后,搜索商品,浏览网页,略掉不能选择的尺寸,选择之后,点击商品选择数量的加号,然后加入购物车。

实现代码如下:

1 # coding=utf-8 2 from selenium import webdriver 3 from time import sleep 4 import keyword 5 from mon.keys import Keys 6 from selenium.webdriver.support.wait import WebDriverWait 7 from selenium.webdriver.support.ui import Select 8 import csv 9 import random10 import io11 12 # 滚动滚动条`13 def MoveScorllBar(driver, down, range1, range2):14moneCount = random.randint(range1, range2)15for num in range(1, moneCount):16 if (down == "down"):17 driver.find_element_by_xpath("//body").send_keys(Keys.DOWN)18 sleep(random.uniform(0.1, 0.5))19 else:20 driver.find_element_by_xpath("//body").send_keys(Keys.UP)21 sleep(random.uniform(0.1, 0.5))22return23 24 # 弹出新的浏览器窗口后,将之后的操作指向新的浏览器窗口25 def SwitchWindow():26windows = driver.window_handles27driver.switch_to_window(windows[1])28 29 if __name__ == "__main__":30 31#设置全局变量32a = '耐克Nike AIR JORDAN 1 MID 男子白色配银灰色篮球鞋'33num = '3'34datas=[]35 36#打开浏览器,进入网站37driver = webdriver.Chrome()38driver.get("")39MoveScorllBar(driver, "down", 10, 30)40MoveScorllBar(driver, "up", 10, 30)41 42#输入想要搜索的商品-->点击搜索按钮43driver.find_element_by_xpath("// *[ @ id = 'J-search'] / div[1] / input").send_keys(a)44driver.find_element_by_xpath("// *[ @ id = 'J-search'] / div[1] / a / span").click()45 46# 进入商品详情页面47driver.find_element_by_css_selector('section#J_searchCatList div:nth-child(2)').click()48SwitchWindow()49MoveScorllBar(driver, "down", 10, 30)50MoveScorllBar(driver, "up", 10, 30)51 52#统计页面上有多少个尺寸53lists=driver.find_element_by_xpath("//*[@id='J-sizeArea-wrap']/dd[2]/ul").find_elements_by_tag_name('li')54print(lists)55for list in lists:56 a=list.get_attribute("class")57 sizes = list.get_attribute("data-size-name")58 #print(a)59 if "disabled" in a:60 print('这是个无效的的尺寸:%s' % sizes)61 elif "selected" in a:62 print('这是个已默认选择的或有机会的尺寸:%s' % sizes)63 64 else: #取上面if,elif外的其他所有情况65 if sizes != None:66 print('已选尺寸:%s' % sizes)67 list.click()68 break69 #由于选中尺寸之后,鼠标停在尺寸上会弹出来一个tip框,挡上了下面的选择数量的加号按钮,所以没办法click上加好,所以之后我们再次浏览商品,让鼠标立刻开尺寸处,露出下面的数量选择的加号按钮。70MoveScorllBar(driver, "down", 10, 30)71MoveScorllBar(driver, "up", 10, 30)72#选择数量73addbutton=driver.find_element_by_xpath("//*[@id='J-num-select']/dd[1]/a[2]")74print(addbutton)75addbutton.click()76sleep(3)77# 加入购物车78driver.find_element_by_class_name("ui-btn-loading-before").click()79print('主人,您购买的商品已经加入购物车了,快去付款吧~')80#driver.find_element_by_xpath("//*[@id='J-cartAdd-sizeID-1612349898']").click()81#driver.find_element_by_class_name("vipFont num-add J-num-act-add").click()

从csv文件读取,写入csv文件

1 # coding=utf-8 2 from selenium import webdriver 3 from time import sleep 4 import keyword 5 from mon.keys import Keys 6 from selenium.webdriver.support.wait import WebDriverWait 7 from selenium.webdriver.support.ui import Select 8 import csv 9 import random 10 import io 11 12 #文件路径 13 inputFilePath = "F:\script\py_scripts\csvfileRead.csv" 14 outputFilePath = "F:\script\py_scripts\csvfileOutput.csv" 15 16 #读取csv文件 17 def Readcsvfile(filePath): 18csvFile = open(filePath, "r") 19reader = csv.reader(csvFile) # 返回的是迭代类型 20return reader 21 22 #将读取的内容写入一个新的csv文档 23 def Savecsvfile(filePath): 24csvFile2 = open(filePath, 'w', newline='') # 设置newline,否则两行之间会空一行 25writer = csv.writer(csvFile2) 26writer.writerow(['GoodName']) 27writer.writerows(outputString) 28#csvfile.close() 29 30 # 滚动滚动条` 31 def MoveScorllBar(driver, down, range1, range2): 32moneCount = random.randint(range1, range2) 33for num in range(1, moneCount): 34 if (down == "down"): 35 driver.find_element_by_xpath("//body").send_keys(Keys.DOWN) 36 sleep(random.uniform(0.1, 0.5)) 37 else: 38 driver.find_element_by_xpath("//body").send_keys(Keys.UP) 39 sleep(random.uniform(0.1, 0.5)) 40return 41 42 # 弹出新的浏览器窗口后,将之后的操作指向新的浏览器窗口 43 def SwitchWindow(): 44windows = driver.window_handles 45driver.switch_to_window(windows[1]) 46 47 if __name__ == "__main__": 48 49#设置全局变量 50#a = '耐克Nike AIR JORDAN 1 MID 男子白色配银灰色篮球鞋' 51#num = '3' 52outputString=[] 53 54goods = Readcsvfile(inputFilePath) 55for good in goods: 56 goodName = good[0] 57 print(goodName) 58 #打开浏览器,进入网站 59 driver = webdriver.Chrome() 60 driver.get("") 61 MoveScorllBar(driver, "down", 10, 30) 62 MoveScorllBar(driver, "up", 10, 30) 63 64 #输入想要搜索的商品-->点击搜索按钮 65 driver.find_element_by_xpath("// *[ @ id = 'J-search'] / div[1] / input").send_keys(good[0]) 66 driver.find_element_by_xpath("// *[ @ id = 'J-search'] / div[1] / a / span").click() 67 68 # 进入商品详情页面 69 driver.find_element_by_css_selector('section#J_searchCatList div:nth-child(2)').click() 70 SwitchWindow() 71 MoveScorllBar(driver, "down", 10, 30) 72 MoveScorllBar(driver, "up", 10, 30) 73 74 #统计页面上有多少个尺寸 75 lists=driver.find_element_by_xpath("//*[@id='J-sizeArea-wrap']/dd[2]/ul").find_elements_by_tag_name('li') 76 print(lists) 77 for list in lists: 78 a=list.get_attribute("class") 79 sizes = list.get_attribute("data-size-name") 80 #print(a) 81 if "disabled" in a: 82 print('这是个无效的的尺寸:%s' % sizes) 83 elif "selected" in a: 84 print('这是个已默认选择的或有机会的尺寸:%s' % sizes) 85 86 else: #取上面if,elif外的其他所有情况 87 if sizes != None: 88 print('已选尺寸:%s' % sizes) 89 list.click() 90 break 91 92 MoveScorllBar(driver, "down", 10, 30) 93 MoveScorllBar(driver, "up", 10, 30) 94 95 #选择数量 96 addbutton=driver.find_element_by_xpath("//*[@id='J-num-select']/dd[1]/a[2]") 97 print(addbutton) 98 addbutton.click() 99 sleep(3)100 101 # 加入购物车102 driver.find_element_by_class_name("ui-btn-loading-before").click()103 print('主人,您购买的商品已经加入购物车了,快去付款吧~')104 outputString.append([goodName])105 driver.quit()106Savecsvfile(outputFilePath)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。