, если вы хотите, чтобы он записывался как файл Excel вместо csv, измените на:
filename = "BuyandSell_V3.xls"
df = pd.read_excel(filename)
df.to_excel(filename, index=False)
чтобы в ваших столбцах не было индекса, вам нужно отбросить его при сбросе индекса (что вы делали ранее с results
фреймом данных, но не позже:
df = df.append(results).reset_index(drop=True)
Что касается других вопросов, я не совсем уверен, что вы описываете или что происходит, что он не работает на 4-й день и / или столбцы поменялись местами.
import requests
import pandas as pd
from bs4 import BeautifulSoup
import os
filename = "BuyandSell_V3.xls"
# Initialize an empty 'results' dataframe
results = pd.DataFrame()
# Iterarte through the pages
for page in range(0,20):
url = 'https://buyandsell.gc.ca/procurement-data/search/site?page=' + str(page) + '&f%5B0%5D=sm_facet_procurement_data%3Adata_data_tender_notice&f%5B1%5D=dds_facet_date_published%3Adds_facet_date_published_today'
page_html = requests.get(url).text
page_soup = BeautifulSoup(page_html, "html.parser")
containers = page_soup.findAll("div",{"class":"rc"})
# Get data from each container
if containers != []:
for each in containers:
title = each.find('h2').text.strip()
publication_date = each.find('dd', {'class':'data publication-date'}).text.strip()
closing_date = each.find('dd', {'class':'data date-closing'}).text.strip()
gsin = each.find('dd', {'class':'data gsin'}).text.strip()
notice_type = each.find('dd', {'class':'data php'}).text.strip()
procurement_entity = each.find('dd', {'data procurement-entity'}).text.strip()
# Create 1 row dataframe
temp_df = pd.DataFrame([[title, publication_date, closing_date, gsin, notice_type, procurement_entity]], columns = ['Title', 'Publication Date', 'Closing Date', 'GSIN', 'Notice Type', 'Procurement Entity'])
# Append that row to a 'results' dataframe
results = results.append(temp_df).reset_index(drop=True)
print ('Aquired page ' + str(page+1))
else:
print ('No more pages')
break
# If already have a file saved
if os.path.isfile(filename):
# Read in previously saved file
df = pd.read_excel(filename)
# Append the newest results
df = df.append(results).reset_index(drop=True)
# Drop and duplicates (incase the newest results aren't really new)
df = df.drop_duplicates()
# Save the previous file, with appended results
df.to_excel(filename, index=False)
else:
# If a previous file not already saved, save a new one
df = results.copy()
df.to_excel(filename, index=False)