Tôi đang cố gắng trích xuất các cột đầu tiên và thứ ba của this data table bằng cách sử dụng BeautifulSoup. Từ việc xem HTML, cột đầu tiên có thẻ <th>
. Cột quan tâm khác có dạng là <td>
. Trong mọi trường hợp, tất cả những gì tôi có thể thoát ra là danh sách cột có các thẻ. Nhưng, tôi chỉ muốn văn bản.Trích xuất các cột đã chọn từ một bảng bằng cách sử dụng BeautifulSoup
table
đã là danh sách nên tôi không thể sử dụng findAll(text=True)
. Tôi không chắc chắn làm thế nào để có được danh sách của cột đầu tiên trong một hình thức khác.
from BeautifulSoup import BeautifulSoup
from sys import argv
import re
filename = argv[1] #get HTML file as a string
html_doc = ''.join(open(filename,'r').readlines())
soup = BeautifulSoup(html_doc)
table = soup.findAll('table')[0].tbody.th.findAll('th') #The relevant table is the first one
print table
Tôi không tin rằng bạn sẽ có thể để có được toàn bộ cột như các đại diện HTML là hàng dựa trên (có thể là sai mặc dù). Tôi tưởng tượng bạn có thể ước tính một cái gì đó bằng cách lặp qua các hàng và kéo ra cột tương ứng, thêm nó vào một cấu trúc dữ liệu mà bạn chọn. – RocketDonkey
Tôi bắt đầu bằng cách cố gắng nhưng vẫn không thể kéo ra văn bản. Tôi sẽ cập nhật câu trả lời của tôi để bao gồm phần đó. Có lẽ đó là một cách dễ dàng hơn để đi. – mac389