网页抓取奖励表



我正在尝试从下面的URL中抓取激励步骤跟踪器表。我只对小型住宅存储感兴趣。

我接近某个地方,但不完全是完整的桌子。请帮助完成我的代码并将结果转换为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)

这是我想刮的表格:

理想输出表

我认为可以用熊猫来完成,对上面的代码进行这些更改:

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

输出类似于所需的表。

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

相关内容

  • 没有找到相关文章

最新更新