como preencher o arquivo do Excel com selênio raspando em loop com python
Sep 16 2020
Estou tentando fazer um scrap em um site que não contém muitas páginas, com selenium eu abro cada vez uma página no segundo 'TAB' e lanço minha função para obter os dados. depois disso, fecho a guia e abro a próxima guia e continuo a extração até a última página. meu problema é quando eu salvo meus dados no arquivo excel, descobri que ele salva apenas a última informação extraída da última página (guia). você pode me ajudar a encontrar meu erro?
def scrap_client_infos(linksss):
tds=[] # tds is the list that contain the data
reader=pd.read_excel(r'C:\python projects\mada\db.xlsx')
writer= pd.ExcelWriter(r'C:\python projects\mada\db.xlsx',engine='openpyxl')
html = urlopen(linksss)
soup=BeautifulSoup.BeautifulSoup(html,'html.parser')
table=soup.find('table',attrs={'class':'r2'})
#scrab all the tr that contain text
for tr in table.find_all('tr'):
elem = tr.find('td').get_text()
elem=elem.replace('\t','')
elem=elem.replace('\n','')
elem=elem.replace('\r','')
tds.append(elem)
print(tds)
#selecting the data that i need to save in excel
raw_data={'sub_num':[tds[1]],'id':[tds[0]],'nationality':[tds[2]],'country':[tds[3]],'city':[tds[3]],'age':[tds[7]],'marital_status':[tds[6]],'wayy':[tds[5]]}
df=pd.DataFrame(raw_data,columns=['sub_num','id','nationality','country','city','age','marital_status','wayy'])
#save the data in excel file
df.to_excel(writer, sheet_name='Sheet1',startrow=len(reader), header=False)
writer.save()
return soup
PS: quero sempre preencher o arquivo excel da última linha
Respostas
2 Mike67 Sep 16 2020 at 20:53
Para anexar dados do Excel usando o Pandas , você precisa definir as planilhas no objeto escritor.
Atualize a última seção do seu código:
#save the data in excel file
from openpyxl import load_workbook
book = load_workbook(path)
startrw = book['Sheet1'].max_row+1
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets) # prevent overwrite
df.to_excel(writer, sheet_name='Sheet1',startrow=startrw, header=False)
writer.save()
return soup
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?