Что-то, с чего можно начать:
from bs4 import BeautifulSoup
import numpy as np
import requests
html_doc= requests.get(r'http://www.espncricinfo.com/series/18886/scorecard/1157372/').content
soup = BeautifulSoup(html_doc, 'html.parser')
data = []
for div in soup.find_all('div',class_="cell runs"):
data.append(div.text)
np.array(data).reshape(-1,5)
Что выводит
array([['R', 'B', '4s', '6s', 'SR'],
['14', '12', '2', '0', '116.66'],
['68', '55', '5', '1', '123.63'],
['39', '30', '2', '2', '130.00'],
['2', '3', '0', '0', '66.66'],
['9', '6', '1', '0', '150.00'],
['0', '1', '0', '0', '0.00'],
['0', '2', '0', '0', '0.00'],
['1', '2', '0', '0', '50.00'],
['0', '1', '0', '0', '0.00'],
['17', '8', '2', '1', '212.50'],
['R', 'B', '4s', '6s', 'SR'],
['0', '3', '0', '0', '0.00'],
['4', '2', '1', '0', '200.00'],
['14', '15', '2', '0', '93.33'],
['2', '7', '0', '0', '28.57'],
['0', '2', '0', '0', '0.00'],
['1', '3', '0', '0', '33.33'],
['19', '23', '2', '0', '82.60'],
['34', '29', '6', '0', '117.24'],
['3', '7', '0', '0', '42.85'],
['6', '3', '1', '0', '200.00'],
['2', '7', '0', '0', '28.57']], dtype='<U6')
И оттуда на самом деле не так уж сложно вставить это во фрейм данных.Вы должны быть осторожны, хотя, поскольку это читает более одной таблицы, вы можете увидеть вторую строку заголовка (т.е. ['R', 'B', '4s', '6s', 'SR']
) на полпути, поэтому вам нужно решить, что с этим делать.