我正在尝试将多个html表转换为一个数据帧, 对于这个任务,我定义了一个函数,将所有这些html表作为数据帧返回
但是,当函数返回一个数据帧时,它返回一个空列表[]
以下是我迄今为止所尝试的:
import requests
from bs4 import BeautifulSoup
import lxml
import html5lib
import pandas as pd
import string
### defining a list for all the needed links ###
first_url='https://www.salario.com.br/tabela-salarial/?cargos='
second_url='#listaSalarial'
allTheLetters = string.ascii_uppercase
links = []
for letter in allTheLetters:
links.append(first_url+letter+second_url)
### defining function to parse html objects ###
def getUrlTables(links):
for link in links:
# requesting link, parsing and finding tag:table #
page = requests.get(link)
soup = BeautifulSoup(page.content, 'html.parser')
tab_div = soup.find_all('table', {'class':'listas'})
# writing html files into directory #
with open('listas_salariales.html', "w") as file:
file.write(str(tab_div))
file.close
# reading html file as a pandas dataframe #
tables=pd.read_html('listas_salariales.html')
return tables
getUrlTables(links)
[]
我在getUrlTables()
中遗漏了什么吗
有没有更简单的方法来完成这项任务
下面的代码将从所有链接中提取HTML,解析它们以提取表数据并构造一个大的组合数据帧(我没有将中间数据帧存储到磁盘,如果表的大小变得太大,可能需要这样做):
上述代码的输出如下所示:
相关问题 更多 >
编程相关推荐