Một vấn đề nhỏ dành cho bạn :-)
Tôi đang sử dụng BeautifulSoup để phân tích nội dung của bảng trong trang HTML. Vấn đề là giữa mỗi dòng trong tệp đầu ra của tôi (CSV/EXCEL), nó kéo ra một dòng trống... Đây là ví dụ về bảng HTML (rất lớn)
Tesco - Vương quốc Anh |
CO |
Không xác định |
cười lớn |
|
Tesco - Vương quốc Anh |
CO |
Không xác định |
cười lớn |
|
Mỗi bạn đều có điều này:
Vì vậy, nó đặt một hàng trống trong bảng CSV/Excel của tôi. Tôi muốn trích xuất tất cả thông tin trong bảng tính Excel nhưng không có hàng trống giữa mỗi hàng...
Đây là kịch bản tôi sử dụng:
hàng = hoạt cảnh[3].findAll('tr')
cho tr theo hàng:
cols = tr.findAll('td', attrs={'class' : 'normaltext'})
y = 0
x = x + 1
cho td trong cols:
texte_bu = td.text
texte_bu = texte_bu.encode('utf-8')
texte_bu = texte_bu.strip()
ws.write(x,y,td.text)
y = y + 1
Cảm ơn rất nhiều vì đã cho tôi mẹo để có được điều này * Những người xuất tệp có dòng trống vô dụng giữa mỗi dòng :)
Cách giải quyết: Khi bạn tìm thấy một dòng trống, hãy bỏ qua vòng lặp và đọc dòng tiếp theo. Điều này ngăn cản bạn viết dòng trống trong sổ làm việc của bạn. :)
Đây là một mô phỏng làm việc. Tôi đã thêm một điều chỉnh thẩm mỹ để tránh gửi dòng trống trên cùng. Hy vọng điều này sẽ giúp bạn không phải lo lắng về những dòng trống :)
từ BeautifulSoup nhập BeautifulSoup
nhập khẩu xlwt
text = '''Tesco - Vương quốc Anh |
CO |
Không xác định |
BULATS |
|
Tesco - Vương quốc Anh |
CO |
Không xác định |
BULATS |
|
'''
wb = xlwt.Workbook()
ws = wb.add_sheet('bảng kiểm tra')
súp = BeautifulSoup(văn bản)
bảng = soup.find('bàn')
hàng = table.findAll('tr')
x = 0
cho tr theo hàng:
cols = tr.findAll('td', attrs={'class' : 'normaltext'})
nếu không phải cols:
# khi chạm vào hàng trống, chúng ta không nên in bất cứ thứ gì vào sổ làm việc
Tiếp tục
y = 0
cho td trong cols:
texte_bu = td.text
texte_bu = texte_bu.encode('utf-8')
texte_bu = texte_bu.strip()
ws.write(x, y, td.text)
print(x, y, td.text)
y = y + 1
# cập nhật con trỏ hàng SAU khi một hàng được in
# điều này tránh hàng trống ở đầu bảng của bạn
x = x + 1
wb.save('example.xls')
Tôi là một lập trình viên xuất sắc, rất giỏi!