Я не знаю, как это сделать pd.read_ html () ... Более того, когда я пытаюсь выполнить простой запрос get с вашим URL, элемент таблицы не возвращается. Я полагаю, именно поэтому простой pd.read_ html не работает.
Однако
Когда вы нажимаете кнопку «UpdateList», это вызывает запрос на получение данных. (F12 -> Сеть -> Html)
Необходимо указать элементы в параметрах dict. Каждый элемент соответствует dropDowns, флажкам в пространстве поиска. Go к инспектору браузера, чтобы установить соединение.
import requests as rq
import pandas as pd
from bs4 import BeautifulSoup as bs
params = {"check":"1","flower_color":"","Ssite":"","searchstr":"","bloom_time":"","Wsite":"","H_Oper":"gt","HTSEL":"","sel_region":"","SUBMIT":"Update List","sortkey":"Scientific_Name","C_Oper":"eq","C":"","Origin":"N","show_latin":"1","show_blooms":"1","W_Oper":"eq","W":"","show_common":"1","S_Oper":"eq","S":"","show_light":"1","show_moisture":"1","show_Thumbs":"1","Thumb_size":"50","show_height":"1","show_price":"1"}
headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0"}
url = 'http://www.nativeplant.com/plants/search/report?'
resp = rq.get(url, headers=headers, params=params)
soup = bs(resp.content)
## c = colnames ; d = data
c = [[th.text.strip() for th in tr.find_all("th")] for tr in soup.find_all("table")[0].find_all('tr')][0]
d = [[td.text.strip() for td in tr.find_all('td')] for tr in soup.find_all("table")[0].find_all('tr')][1:] # this is the second table of the page
df = pd.DataFrame(d, columns=c)