Tôi hiện đang cố gắng thực hành với các yêu cầu và mô-đun BeautifulSoup trong Python 3.6 và gặp phải vấn đề mà tôi dường như không tìm thấy bất kỳ thông tin nào về các câu hỏi và câu trả lời khác.Súp đẹp không thể tìm thấy thẻ
Dường như tại một số thời điểm trong trang, Beuatiful Soup ngừng nhận dạng thẻ và Id. Tôi cố gắng để kéo Play-by-play dữ liệu từ một trang như thế này:
http://www.pro-football-reference.com/boxscores/201609080den.htm
import requests, bs4
source_url = 'http://www.pro-football-reference.com/boxscores/201609080den.htm'
res = requests.get(source_url)
if '404' in res.url:
raise Exception('No data found for this link: '+source_url)
soup = bs4.BeautifulSoup(res.text,'html.parser')
#this works
all_pbp = soup.findAll('div', {'id' : 'all_pbp'})
print(len(all_pbp))
#this doesn't
table = soup.findAll('table', {'id' : 'pbp'})
print(len(table))
Sử dụng thanh tra trong Chrome, tôi có thể thấy rằng bàn chắc chắn tồn tại. Tôi cũng đã cố gắng sử dụng nó trên 'div's và' tr's trong nửa sau của HTML và nó dường như không hoạt động. Tôi đã thử tiêu chuẩn 'html.parser' cũng như lxml và html5lib, nhưng không có gì có vẻ hiệu quả.
Tôi có làm điều gì đó sai ở đây hoặc có điều gì đó trong HTML hoặc định dạng của nó ngăn cản BeautifulSoup tìm chính xác các thẻ sau này không? Tôi đã gặp sự cố với các trang tương tự do công ty này điều hành (hockey-reference.com, basketball-reference.com), nhưng đã có thể sử dụng các công cụ này đúng cách trên các trang web khác.
Nếu nó là thứ gì đó với HTML, có công cụ/thư viện nào tốt hơn để giúp trích xuất thông tin này không?
Cảm ơn bạn đã giúp đỡ của bạn, BF
chính xác những gì bạn muốn phân tích cú pháp từ bảng đó? Tất cả bảng? chỉ một số cột? một số tế bào? –
câu lệnh của bạn 'table = soup.findAll ('table', {'id': 'pbp'})' không _không hoạt động_, nó chỉ đơn giản là không tìm thấy các phần tử 'div' với' id = pbp' –
@DmitriyFialkovskiy Tôi đang cố gắng để tạo ra một tập tin excel của các vở kịch từ các trò chơi cụ thể. Một khi tôi có thể không canh trong bảng đó, tôi tự tin tôi có thể lặp lại thông qua các thẻ tr và td để có được văn bản ra khỏi nó và sử dụng openpyxl để làm cho nó thành excel. Tôi đoán cuối cùng câu hỏi của tôi là tại sao không bs4 tìm thấy thẻ trong html. Có vẻ như bs4 có thể tìm thấy bất kỳ thẻ nào trước khi nhận xét trong html nhưng không sau - nhận xét có ảnh hưởng đến phân tích cú pháp không? có cách nào để kéo thẻ từ sau nhận xét đó một cách chính xác không? –