web scraping - как обратиться к отдельному td внутри tr
всем привет!
Мне необходимо в pandas dataframe записать два элемента внутри каждого ряда
from bs4 import BeautifulSoup
import requests
import html5lib
import pandas as pd
html_data = requests.get('https://en.wikipedia.org/wiki/List_of_largest_banks', timeout=20).content
soup = BeautifulSoup(html_data, "html.parser")
newDataFrame = pd.DataFrame(columns=['Name', 'Market Cap (US$ Billion)'])
for row in soup.find_all('tbody')[3].find_all('tr'):
col = row.find_all('td')
print(col)
т.е первый ряд это
[
<td>1</td>,
<td><a href="/wiki/JPMorgan_Chase" title="JPMorgan Chase">JPMorgan Chase</a></td>,
<td>368.78</td>
]
мне нужно название банка в title и сумма в 3-м ряду
как я могу обратиться на них в цикле выше?
Ответы (1 шт):
Автор решения: Сергей Кох
→ Ссылка
В pandas есть замечательная функция для чтения таблиц c html страницы:
import pandas as pd
dfs = pd.pandas.read_html('https://en.wikipedia.org/wiki/List_of_largest_banks', attrs={'class':'wikitable sortable mw-collapsible'})
print(dfs2][['Bank name', 'Market cap(US$ billion)']])
dfs[2] - берем нужную таблицу и заданные столбцы. И всё!