Таблица, которую вы ищете, не содержится в HTML для страницы, которую вы запрашиваете. Страница использует Javascript для запроса другого HTML-документа, содержащего его, который затем оборачивает, используя <div>
, который вы искали.
Чтобы получить таблицу, вы можете использовать инструмент браузера, чтобы найти URL, который запрашивает страница, и использовать его, чтобы получить нужную страницу:
import requests
from bs4 import BeautifulSoup
import csv
r = requests.get("http://flavorsofcacao.com/database_w_REF.html")
soup = BeautifulSoup(r.content, "html.parser")
with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow([th.get_text(strip=True) for th in soup.table.tr.find_all('th')])
for tr in soup.table.find_all("tr")[1:]:
csv_output.writerow([td.get_text(strip=True) for td in tr.find_all('td')])
Оттуда вы можете сначала извлечь строку заголовка путем поиска записей <th>
, а затем выполнить итерацию всех строк. Данные могут быть записаны в файл CSV с использованием библиотеки CSV Python.
Даю вам output.csv
файл, начинающийся с:
Company (Maker-if known),Specific Bean Origin or Bar Name,REF,Review Date,Cocoa Percent,Company Location,Rating,Bean Type,Broad Bean Origin
A. Morin,Bolivia,797,2012,70%,France,3.5,,Bolivia
A. Morin,Peru,797,2012,63%,France,3.75,,Peru
A. Morin,Brazil,1011,2013,70%,France,3.25,,Brazil
Протестировано с использованием Python 3.6.3