query.get () может быть отфильтровано сайтом на основании вашего отсутствия user-agent.Вы пробовали использовать селен?
from bs4 import BeautifulSoup
from selenium import webdriver
import time
driver = webdriver.Chrome()
url= "https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1010014101"
driver.maximize_window()
driver.get(url)
time.sleep(5)
content = driver.page_source.encode('utf-8').strip()
soup = BeautifulSoup(content,"html.parser")
data = []
table = soup.find('table', attrs={'class':'pub-table'})
table_body = table.find('tbody')
rows = table_body.find_all('tr')
for row in rows:
cols = row.find_all('td')
cols = [ele.text.strip() for ele in cols]
data.append([ele for ele in cols if ele])
print(data)
После того, как я скачал ChromeDriver и распаковал его в тот же каталог, что и мой скрипт, этот код напечатал для меня следующее:
[[], ['..', '..', '..', '..', '85,120'], ['..', '..', '..', '..', '49,637'], ['..', '..', '..', '..', '24,056'], ['..', '..', '..', '..', '0'], ['..', '..', '..', '..', '8,462'], ['..', '..', '..', '..', '2,965']]