Python beautifulsou从“inspect”中刮取元素

2024-06-26 10:34:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用BeautifulSoup从stockrow.com获取一些数据。你知道吗

不过,inspect和view sourcecode之间似乎存在一些差异(我使用chrome,但我不认为这是Pyton的问题)。你知道吗

这会导致一些麻烦,因为源代码本身没有显示任何html标记,例如h1。但是,当我使用inspect工具时,它们会出现。你知道吗

我要刮的零件(除其他外)-这是使用检查工具显示的:

<h1>Teva Pharmaceutical Industries Ltd<small>(TEVA)</small></h1>

我的当前代码,打印空列表:

import bs4 as bs
import urllib.request

class Stock:
    stockrow_url = "https://stockrow.com"
    url_suffix = "/financials/{}/annual"


def __init__(self, ticker : str, stock_url=stockrow_url, url_suffix = url_suffix):
    # Stock ticker
    self.ticker = ticker.upper()

    # URLs for financial statements related to the ticker
    self.stock_url = stock_url + "/{}".format(self.ticker)

    sauce = urllib.request.urlopen(self.stock_url).read()
    soup = bs.BeautifulSoup(sauce, 'html.parser').h1
    print(soup)



    self.income_url = self.stock_url + url_suffix.format("income")
    self.balance_sheet_url = self.stock_url + url_suffix.format("balance")
    self.cash_flow_url = self.stock_url + url_suffix.format("cashflow")

teva = Stock("teva")
print(teva.get_income_statement())

Tags: selfcomformaturlhtmlstockh1suffix
1条回答
网友
1楼 · 发布于 2024-06-26 10:34:19

该页是使用jscript动态生成的,不能由beautifulsoup处理。您可以使用selenium之类的工具或者通过looking for API calls.捕获信息

在这种情况下,您可以使用

import json
import requests

hdr = {'User-Agent':'Mozilla/5.0'}    
url = "https://stockrow.com/api/companies/TEVA.json?ticker=TEVA"

response = requests.get(url, headers=hdr)
info = json.loads(response.text)
info

同样,损益表也隐藏在这里:

url = 'https://stockrow.com/api/companies/TEVA/financials.json?ticker=TEVA&dimension=MRY&section=Income+Statement'

使用与上述相同的代码,但与此其他网址,将得到您的损益表,在json格式。你知道吗

你可以从那里拿走。四处搜索-有很多关于这个主题的信息。祝你好运。你知道吗

相关问题 更多 >