cara mengisi file excel dari scraping selenium secara loop dengan python
Saya mencoba untuk membatalkan sebuah situs web daripada berisi banyak halaman, dengan selenium saya membuka setiap kali sebuah halaman di 'TAB' kedua dan menjalankan fungsi saya untuk mendapatkan data. setelah itu saya tutup tab dan buka tab selanjutnya dan lanjutkan ekstraksi hingga halaman terakhir. Masalah saya adalah ketika saya menyimpan data saya di file excel, saya menemukan bahwa itu hanya menyimpan ekstrak informasi terakhir dari halaman terakhir (tab). dapatkah Anda membantu saya menemukan kesalahan saya?
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: Saya selalu ingin mengisi file excel dari baris terakhir
Jawaban
Untuk menambahkan data excel menggunakan Pandas , Anda perlu mengatur lembar kerja di objek penulis.
Perbarui bagian terakhir dalam kode Anda:
#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