我试图通过selenium将web擦伤保存到Pandas,这应该是追加新值,然后删除重复值,或者从一开始就添加新值。
我正在挣扎于第一步--将数据添加到dataframe中。数据刮取工作,我过去通过file.write保存数据,它工作得很好,但是当我试图将数据传递给DF时,只添加了第一个值(循环通过链接工作,多个值被提取,但没有写到df)。
请协助:(
当前脚本:
for link in links:
try:
sleep(randint(5,10))
driver.get(link)
myElem = WebDriverWait(browser, 5).until(EC.presence_of_element_located((By.CLASS_NAME, "item" )))
#DATA
#NAME DATA
try:
product = [driver.find_element(By.CLASS_NAME, 'name').get_attribute('innerHTML')]
except Exception:
product = ["Other"]
#BRAND DATA
try:
brand = [driver.find_element_by_xpath("// span[contains(text(),'Brand')]/following-sibling::p").get_attribute('innerHTML')]
except Exception:
brand = ["Other"]
except:
pass
df = pd.DataFrame(data=list(zip(product, brand)), columns=['Product', 'Brand'])
print(df)
df.to_csv('C:/product data DF.txt', sep='\t', mode='w', index=False)
driver.quit()
f.close()发布于 2022-07-02 12:54:07
对于循环中的每一次,您都要将product创建为一个包含一个项的新列表。brand也是如此。
因此,当您创建DataFrame时,product和brand只包含在循环中处理的最后链接的数据。
相反,您应该在启动循环之前将product和brand创建为空列表,并在循环的每一次迭代中向它们创建.append。
https://stackoverflow.com/questions/72839162
复制相似问题