TypeError: diperlukan objek seperti byte, bukan 'str'
mendapatkan kesalahan di atas saat Menjalankan kode python di bawah ini untuk menyimpan data tabel HTML dalam file Csv. tidak tahu cara mendapatkan rideup. Tolong bantu saya.
import csv
import requests
from bs4 import BeautifulSoup
url='http://www.mapsofindia.com/districts-india/'
response=requests.get(url)
html=response.content
soup=BeautifulSoup(html,'html.parser')
table=soup.find('table', attrs={'class':'tableizer-table'})
list_of_rows=[]
for row in table.findAll('tr')[1:]:
list_of_cells=[]
for cell in row.findAll('td'):
list_of_cells.append(cell.text)
list_of_rows.append(list_of_cells)
outfile=open('./immates.csv','wb')
writer=csv.writer(outfile)
writer.writerow(["SNo", "States", "Dist", "Population"])
writer.writerows(list_of_rows)
di atas baris terakhir.
csv
python-3.x
beautifulsoup
html-table
ShivaGuntuku
sumber
sumber
Jawaban:
Anda menggunakan metodologi Python 2 alih-alih Python 3.
Perubahan:
Untuk:
dan Anda akan mendapatkan file dengan output berikut:
Dalam Python 3 csv mengambil input dalam mode teks, sedangkan di Python 2 mengambilnya dalam mode biner.
Diedit untuk Tambah
Ini kode yang saya jalankan:
sumber
csv
modul, Python 3open
seharusnya juga memilikinewline=''
sebagai parameter [ref ]Saya memiliki masalah yang sama dengan Python3. Kode saya sedang menulis
io.BytesIO()
.Mengganti dengan
io.StringIO()
dipecahkan.sumber
io.StringIO()
adalah keserakahan memori dan bisa menjadi sakit kepala dengan file besar.Dalam kasus saya, saya menggunakan BeautifulSoup untuk menulis .txt dengan Python 3.x. Itu memiliki masalah yang sama. Seperti yang dikatakan @tsduteba, ubah 'wb' di baris pertama menjadi 'w'.
sumber
ubah saja wb ke w
untuk
sumber
Anda membuka file csv dalam mode biner, seharusnya
'w'
sumber