Почему я получаю Нетип, когда пытаюсь очистить данные с веб-страниц? - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить информацию из таблицы по следующей ссылке:

https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1010014101

Но я продолжаю получать NoneType, когда пытаюсь очистить данные.

Вот код, который я пробовал

import requests
from bs4 import BeautifulSoup
page=requests.get('https://www150.statcan.gc.ca/t1/tbl1/en/tv.action?pid=1010014101')
soup=BeautifulSoup(page.content,'html5lib')
x=soup.find('main',role='main')
print(x)

Я хотел бы знать, что я делаю неправильно.

1 Ответ

0 голосов
/ 14 мая 2019

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']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...