Python、Selenium、DataFrame和Excel
我拼凑拼图的最后一部分有困难。整个代码如下所示,其中包括一个非必需的用户名和密码,用于我正在抓取数据的站点 使用从Excel文件循环浏览零件号后Python、Selenium、DataFrame和Excel,excel,python-3.x,pandas,selenium,dataframe,Excel,Python 3.x,Pandas,Selenium,Dataframe,我拼凑拼图的最后一部分有困难。整个代码如下所示,其中包括一个非必需的用户名和密码,用于我正在抓取数据的站点 使用从Excel文件循环浏览零件号后 pd.read\u excel() 硒是用来刮网站上的各种问题;然后,代码将这些值成功写入输出窗口 与将数据写入输出窗口不同,我的目标是写入从中提取数据的同一个Excel文件,将其写入适当的列 在代码的最后一个for循环中,我最初尝试通过添加 .to_excel('filePathHere') 对所讨论的变量。作为一个例子,我试图 descript
pd.read\u excel()
硒是用来刮网站上的各种问题;然后,代码将这些值成功写入输出窗口
与将数据写入输出窗口不同,我的目标是写入从中提取数据的同一个Excel文件,将其写入适当的列
在代码的最后一个for
循环中,我最初尝试通过添加
.to_excel('filePathHere')
对所讨论的变量。作为一个例子,我试图
description.to_excel('pathToFile/output.xlsx'))
扫描字符串文字(,第1行)时产生EOL错误
然后我想,也许这个变量需要转换成数据帧,所以我试着
description\u DataFrame=pd.DataFrame(description)
说明\u DataFrame.to \u excel('pathToFile/output.xlsx'))
这导致了相同的错误消息
我甚至不确定这是否是将每个项写入现有(或新)文件的正确逻辑。如果是,我在这里找到了一个关于如何处理长字符串的解释:但是我的数据都不是长字符串,所以我看不出这是如何应用的
然后我开始想我可能需要创建一个字典,然后附加到它。
因此,我从上面删除了所有尝试,并尝试:
description=[]
说明.附加(制造零件)
制造零件到excel('pathToFile/output.xlsx')
这仍然给我相同的下线错误
我不确定出了什么问题,以及为什么我不能将变量mfg_part、mfg_OEM、description
写入加载的Excel文件中各自的列中
如有任何提示,将不胜感激
完整的工作代码,打印到屏幕上如下:
导入时间
#需要Selenium与web元素交互
从selenium导入webdriver
从selenium.webdriver.common.by导入
从selenium.webdriver.support.ui导入WebDriverWait
从selenium.webdriver.support将预期的_条件导入为EC
从selenium.webdriver.common.keys导入密钥
#需要numpy/pandas与大型数据集交互
将numpy作为np导入
作为pd进口熊猫
进口itertools
#通过Excel文件从组件集合加载制造零件号
mfg_id_list=pd.read_excel(“C:/Users/James/Documents/Python Scripts/jupyterNoteBooks/ScrapingData/MasterQuoteTemplate.xls”)['Model']
#创建一个字典来存储产品和价格
#虽然下面的工作很好,但我们希望创建一个空的数据框架,以便以后可以输出到Excel
productInfo={}
chrome\u path=r“C:\Users\James\Documents\Python Scripts\jupyterNoteBooks\ScrapingData\chromedriver\u win32\chromedriver.exe”
driver=webdriver.Chrome(Chrome\u路径)
驱动程序。最大化_窗口()
驱动程序。获取(“https://www.tessco.com/login")
userName=“FirstName。SurName321123@gmail.com"
password=“PasswordForThis123”
#设置等待,等待元素加载到DOM中
wait10=WebDriverWait(驱动程序,10)
wait20=WebDriverWait(驱动程序,20)
wait30=WebDriverWait(驱动程序,30)
elem=wait10.until(EC.element可点击((By.ID,“userID”))
元素发送密钥(用户名)
elem=wait10.until(EC.element可点击((By.ID,“密码”))
要素发送密钥(密码)
#按登录按钮
驱动程序。通过xpath(“html/body/account login/div/div[1]/form/div[6]/div/button”)查找元素。单击()
对于制造商id列表中的i:
#展开搜索栏
searchBar=wait10.until(EC.element可点击((By.CSS_SELECTOR,“#searchBar输入”))
#在搜索栏中输入信息
#如果单元格不是空的
如果len(str(i))!=0:
searchBar.send_key(key.CONTROL,'a')
搜索栏。发送密钥(i)
驱动程序。通过\u css\u选择器('a.inputButton')查找\u元素。\u。单击()
时间。睡眠(5)
尝试:
#等待加载产品信息
products=wait10.until(EC.presence\u所有元素的位置((By.XPATH,//div[@class='CoveoResult']))
#isProductsThere=driver.find_element_by_xpath(“//div[@class='CoveoResult']”)
如果产品:
#迭代搜索结果中的所有产品,并将详细信息添加到字典中
对于产品中的产品:
#获取产品信息,如OEM、说明和零件号
productDescr=product.find_element_by_xpath(“.//a[@class='productName CoveoResultLink HIDDED xs'])。text
mfgPart=product.find_element_by_xpath(“.//ul[@class='unlistedinfo']”)。text.split('\n')[3]
mfgName=产品。通过标签名称(“img”)查找元素。获取属性(“alt”)
#有多个类,一些是“类销售”或其他。
#我们将通过CSS定位
price=product.find_element_by_css_selector(“div.price”).text.split('\n')[1]
#向字典添加详细信息
productInfo[mfgPart、mfgName、productDescr]=价格
#打印搜索到的产品信息
对于(制造零件、制造OEM、说明),productInfo.items()中的价格:
制造标识=制造零件分割(':')[1]
如果制造商id==i:
#这里是我将写入Excel文件的地方
#我在那里做了如上所述的尝试
打印('UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
打印(‘零件号:’,制造商id)
打印(“公司:”,制造商/原始设备制造商)
打印('说明:',说明)