cara mengisi file excel dari scraping selenium secara loop dengan python

Sep 16 2020

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

2 Mike67 Sep 16 2020 at 20:53

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