背景小姐姐在日常工作有一项很令她抓狂的事情,就是要不停地从某电商网站复制商品名称、单价、详情等信息,然后粘贴到Excel表格中去做竞品分析。如果就几条数据,感觉辛苦下,手工弄弄其实也是没什么,但后面问了一下得知这个事情她每周都要做,这件事情大概要占用她半天左右的时间才能搞完,数据比较多的情况下甚至要用一天的时间才能搞完。 工具运行效果: 解决方案1、获取数据商品列表信息。 2、获取商品详细信息。 3、生成Excel文件。 技术实现1、导入模块 import requestsimport jsonimport timefrom selenium.webdriver.chrome.service import Servicefrom selenium import webdriverfrom selenium.webdriver.common.by import Byimport xlsxwriterimport random 2、获取数据
3、获取要写入Excel文件的数据 # 获取要写入Excel文件的数据def getExcelDataList(chromedriverPath): # chromedriverPath chromedriver驱动文件路径 service = Service(chromedriverPath) driver = webdriver.Chrome(service=service) # 获取itemList数据 itemList = fetchItemDataList() resultList = [] itemNumber = 1 for item in itemList: print(f'<== 第 {itemNumber} 条') itemNumber += 1 driver.get(item['link_url']) # 上架时间 title = '' price = '' itemPicture = '' try: title = driver.find_element(By.XPATH, '/html/body/div[6]/div/div[2]/div[1]').text except Exception as e: print(e) try: price = driver.find_element(By.XPATH, '/html/body/div[6]/div/div[2]/div[4]/div/div[1]/div[2]/span[1]/span[2]').text except Exception as e: print(e) try: itemPicture = driver.find_element(By.XPATH, '//*[@id='spec-img']').get_attribute('data-origin') except Exception as e: print(e) _itemPicture = 'https:' + itemPicture print(f'商品名称: {title}') print(f'单价: {price}') print(f'图片: {_itemPicture}') resultList.append( { 'title': title, 'price': price, 'itemPicture': _itemPicture, } ) time.sleep(random.randint(0, 100) * 0.01) print(resultList) driver.close() return resultList 4、生成Excel文件
结果总结为了方便大家理解,以上内容是我实现这个工具的精简版本,实际要比这复杂得多。在这过程中,也遇到不少困难,踩了不少坑。一开始我是以为就这玩意分分钟就能搞定,实践过程中却被这残酷的现实啪啪打脸了。主要遇到的问题:1、是在处理获取的数据方面,会遇到各种异常的情况。2、如何更好地去优化正确率。3、需要处理很多相关库的报错问题,使用方式的问题。 |
|