我正尝试从以下链接的表格中抓取信息:
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)
我很想知道我在做错什么。
答案 0 :(得分:0)
requests.get()过滤掉。您是否尝试过使用硒?
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']]