我想从以下网站下载财务数据("konsernregnskap“而不是"morregnskap"),但我不确定如何下载所有内容:https://www.proff.no/regnskap/yara-international-asa/oslo/hovedkontortjenester/IGB6AV410NZ/
试图用xpath定位这些表,但我没有成功。
我想下载所有的内容到一个excel表格。
发布于 2019-08-11 21:01:04
@rusu_ro1给出的答案是正确的。然而,我认为https://pandas.pydata.org/是合适的工作工具。
您可以使用https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.read_html.html获取页面中的所有表。然后使用https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_excel.html只将最后4个表写入excel工作簿。
下面的脚本会抓取数据并将每个表写入不同的工作表。
import pandas as pd
all_tables = pd.read_html(
"https://www.proff.no/regnskap/yara-international-asa/oslo/hovedkontortjenester/IGB6AV410NZ/"
)
with pd.ExcelWriter('output.xlsx') as writer:
# Last 4 tables has the 'konsernregnskap' data
for idx, df in enumerate(all_tables[4:8]):
# Remove last column (empty)
df = df.drop(df.columns[-1], axis=1)
df.to_excel(writer, "Table {}".format(idx))备注:
pip install lxml风味: str或None,字符串容器 要使用的解析引擎。‘bs4’和‘html5lib’是同义词,它们都是为了向后兼容而存在的。默认的None尝试使用lxml解析,如果失败,则返回到bs4 + html5lib。
来自https://pandas.pydata.org/pandas-docs/version/0.23/io.html#io-html-gotchas
html5lib自动从无效标记生成有效的HTML5标记。这对于解析HTML表非常重要,因为它保证了一个有效的文档。但是,这并不意味着它是“正确的”,因为修复标记的过程没有一个定义。
在您的具体情况下,它会删除第五个表(它只返回7)。也许B‘’coz-第1表和第5表--都有相同的数据。
发布于 2019-08-11 13:01:53
类表包装中有8个表,前4个表属于"morregnskap“选项卡,接下来的4个表属于"konsernregnskap”选项卡,因此通过选择最后4个表,您将从可以开始刮取数据的位置选择所需的表。
import requests
import json
import bs4
url = 'https://www.proff.no/regnskap/yara-international-asa/oslo/hovedkontortjenester/IGB6AV410NZ/'
response = requests.get(url)
soup = bs4.BeautifulSoup(response.text, 'lxml')
tables = soup.find_all('div', {'table-wrap'})
konsernregnskap_data = tables[5:]https://stackoverflow.com/questions/57449268
复制相似问题