网页抓取奖励 Table
Web Scraping Incentive Table
我正在尝试从下面的 URL 中抓取激励步骤跟踪器 table。我只对小型住宅存储感兴趣。
我得到了一些接近但不完全 table 的地方。请帮助完成我的代码并将结果转换为 CSV 格式,以便我可以保存到本地文件夹。
这是我的代码:
# import libraries
from bs4 import BeautifulSoup
import urllib.request
import csv
urlpage='https://www.selfgenca.com/home/program_metrics/'
page = urllib.request.urlopen(urlpage)
# parse the html using beautiful soup and store in variable 'soup'
soup = BeautifulSoup(page, 'html.parser')
print(soup)
table = soup.find('table',{'class': 'table'}).find_all('tbody',{'data-t': 'Small Residential Storage'})[0]
results = table.find_all('tr')
print(results)
这是我要抓取的table:
Ideal Output Table
我认为 pandas 可以完成,只需对上面的代码进行以下更改:
import pandas as pd
#get the headers
tab = soup.find('table',{'class': 'table'}).find_all('tr',{'class': 'head-row'})
headers=[]
for h in tab[0].find_all('td'):
headers.append(h.text)
并创建数据框
final = []
for res in results:
tmp = []
for r in res:
if not 'NavigableString' in str(type(r)):
tmp.append(r.text.strip())
final.append(tmp)
df = pd.DataFrame(final,columns=headers)
df
输出看起来像您想要的 table。
row1 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': 'head-row'})[1]
line1=[]
for h in row1.find_all('td'):
line1.append(h.text)
row2 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': ''})[3]
line2=[]
for h in row2.find_all('td'):
line2.append(h.text)
df1=pd.DataFrame([line1,line2], columns=headers)
df2=df.append(df1,ignore_index=True)
df2
我正在尝试从下面的 URL 中抓取激励步骤跟踪器 table。我只对小型住宅存储感兴趣。
我得到了一些接近但不完全 table 的地方。请帮助完成我的代码并将结果转换为 CSV 格式,以便我可以保存到本地文件夹。
这是我的代码:
# import libraries
from bs4 import BeautifulSoup
import urllib.request
import csv
urlpage='https://www.selfgenca.com/home/program_metrics/'
page = urllib.request.urlopen(urlpage)
# parse the html using beautiful soup and store in variable 'soup'
soup = BeautifulSoup(page, 'html.parser')
print(soup)
table = soup.find('table',{'class': 'table'}).find_all('tbody',{'data-t': 'Small Residential Storage'})[0]
results = table.find_all('tr')
print(results)
这是我要抓取的table:
Ideal Output Table
我认为 pandas 可以完成,只需对上面的代码进行以下更改:
import pandas as pd
#get the headers
tab = soup.find('table',{'class': 'table'}).find_all('tr',{'class': 'head-row'})
headers=[]
for h in tab[0].find_all('td'):
headers.append(h.text)
并创建数据框
final = []
for res in results:
tmp = []
for r in res:
if not 'NavigableString' in str(type(r)):
tmp.append(r.text.strip())
final.append(tmp)
df = pd.DataFrame(final,columns=headers)
df
输出看起来像您想要的 table。
row1 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': 'head-row'})[1]
line1=[]
for h in row1.find_all('td'):
line1.append(h.text)
row2 = soup.find_all('table',{'class': 'table'})[1].find_all('tr',{'class': ''})[3]
line2=[]
for h in row2.find_all('td'):
line2.append(h.text)
df1=pd.DataFrame([line1,line2], columns=headers)
df2=df.append(df1,ignore_index=True)
df2