【发布时间】:2020-04-10 16:00:26
【问题描述】:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
import pandas as pd
from pymongo import MongoClient
import tkinter as tk
from tkinter import filedialog
from pandas import DataFrame
from datetime import datetime
# launch WMS
url = "https://inserturlhere.com/solution/login.htm"
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(url)
#Login start
username = driver.find_element_by_id("username")
username.clear()
username.send_keys("xxx")
password = driver.find_element_by_id("password")
password.clear()
password.send_keys("xxx")
driver.find_element_by_id("loginButton").click()
#login end
# set variables
pageSize = 200
pageNo = 0
currentView = 33362
entityName = "Item"
now = datetime.now()
def get_filename_datetime():
return str(entityName) + "-" + str(now.strftime("%d%m%Y-%H%M%S")) +".csv"
for pageNo in range(10):
url2 = "https://inserturlhere.com/solution/entitylist.htm?entityName=Item&tabName=Item&pageNo={pageNo}&pageSize={pageSize}¤tViewId={currentView}".format(pageNo=pageNo, pageSize=pageSize, currentView=currentView)
# open shipments page
driver.get(url2)
html = driver.page_source
dfs = pd.read_html(html, attrs={"class":"roundedTable"}, header=5)
for df in dfs:
df.dropna(how="all", axis="columns", inplace=True)
df.drop({"No", "Process Action"}, axis="columns", inplace=True)
df.dropna(how='all', axis=0, inplace=True)
df.append(dfs)
df.to_csv(get_filename_datetime(), index=False)
大家好。我如何修改上面的代码以在每次循环每页时保存一个新的 csv?现在,它只保存一个包含最后一页的文件。
如果需要更多数据,请告诉我!谢谢!
【问题讨论】:
-
您测试过
get_filename_datetime是否有效?for df in dfs:您正在迭代某些东西 -df.append(dfs)将 iterable 附加到项目 - 这似乎有点奇怪。那是故意的吗?为我们创建一个minimal minimal reproducible example 可能会帮助您解决问题。用铅笔和纸浏览你的代码通常很有启发性。 - How to debug small programs -
当您在
to_csv调用之前打印get_filename_datetime()时,您得到了预期的结果吗? -
嗨,二战,是的,get_filename_datetime 正在工作,就文件名而言,我得到了我所期望的。但是,它只保存了我循环到 csv 文件中的最后一页。它并没有真正将每页的结果附加到我的 df 中。正如您所指出的,我可能完全错误地执行了附加操作。如果我可以将结果放入一个数据框中,那将比每页获取一个 csv 文件更理想。这实际上是我的目标,但我不知道该怎么做。请告诉我!谢谢!
标签: python pandas selenium web-scraping beautifulsoup