首页 > 解决方案 > 如何使用 beautifoulsoup 从特定 URL 下载数据并将结果保存为 excel 文件?

问题描述

我需要从这个网站下载标准普尔 500 指数公司的净收入https://www.macrotrends.net/stocks/charts/MMM/3m/income-statement

我按照在线指南(这个https://towardsdatascience.com/web-scraping-for-accounting-analysis-using-python-part-1-b5fc016a1c9a )编写了这部分代码,但我不知道如何总结一下,更具体地说,如何将提取的净收入下载到 excel 文件中。

import requests
import urllib.request
import time
from bs4 import BeautifulSoup

url = 'https://www.macrotrends.net/stocks/charts/MMM/3m/income-statement'
response = requests.get(url)

response
soup = BeautifulSoup(response.text, 'html.parser')

income_statement = soup.findAll('a')[19]
link = income_statement['href']
download_url = 'https://www.macrotrends.net/stocks/charts/MMM/3m/income-statement/'+ link

任何建议将不胜感激,谢谢!

标签: pythonweb-scrapingbeautifulsoup

解决方案


我认为完成这项任务的正确方法是使用一些股票市场 API,而不是使用 BS4 进行网络抓取。我建议你看看下面的文章,它还包括一些实际的例子: https ://towardsdatascience.com/best-5-free-stock-market-apis-in-2019-ad91dddec984

编辑:

如果你决定坚持使用你提到的这个确切的 URL 的计划,我认为你应该尝试使用pandas,尝试这样的事情:

import pandas as pd
data = pd.read_html('https://www.macrotrends.net/stocks/charts/MMM/3m/income-statement​',skiprows=1)

由于表包含一些非 ascii 字符,因此您必须稍微使用编码


推荐阅读