我是Python的新手,我正在尝试抓取一些数据并将其保存在csv中。 我试图用一个URL列表循环一个csv,从每个URL读取数据,然后将该信息写到另一个csv文件中
以下代码在cvs中写入了大约一半的数据,但是在写入时一切正常打印
df_link = pd.read_csv('url_list')
with open('url_list.csv', newline='') as urls, open('output.csv', 'w', newline='') as output:
csv_urls = csv.reader(urls)
csv_output = csv.writer(output)
csv_output.writerow(['details','date'])
for link in df_link.iterrows():
url = link[1]['url']
browser.get(url)
soup = BeautifulSoup(browser.page_source)
csv_file = open('output.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['details'])
details=[i.text for i in soup.find_all(class_='product-info-content-
block product-info')]
print('details :', details)
dt = date.today()
print('date :', dt)
csv_output.writerow([str(details).strip('[]'), dt])
csv_file.close()
代码运行时,一切都可以正常打印,但并非所有数据行都被写入到csv输出中。
我希望有人能提供帮助。 谢谢!
答案 0 :(得分:1)
好像您要打开两次output.csv,一次是在开头,然后是for循环。由于您使用w
之类的csv_file = open('output.csv', 'w')
选项打开,因此它将在每个循环中覆盖文件。
因此,如果将以下部分移出循环,则可能会更好
csv_file = open('output.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['details'])