<p>此页面使用<code>JavaScript</code>在<code>{{...}}</code>位置添加值,但<code>requests</code>和<code>Beautifulsoup</code>无法运行<code>JavaScript</code>。您可能需要<a href="https://selenium-python.readthedocs.io/" rel="nofollow noreferrer">Selenium</a>来控制可以运行<code>JavaScript</code>的真实web浏览器</p>
<hr/>
<p>使用<code>Firefox</code>/<code>Chrome</code>(tab:<code>Network</code>,filter:<code>XHR</code>)中的<code>DevTools</code>,我发现<code>JavaScript</code>从</p>
<p><a href="https://webapi.investagrams.com/InvestaApi/Stock/ViewStock?stockCode=ac&defaultExchangeType=1&cv=1622292000-0-" rel="nofollow noreferrer">https://webapi.investagrams.com/InvestaApi/Stock/ViewStock?stockCode=ac&defaultExchangeType=1&cv=1622292000-0-</a></p>
<p>使用带有一些标题的<code>requests</code>我也可以得到它。<br/>
因为它以<code>JSON</code>的形式获取数据,所以我不需要<code>BeautifulSoup</code>进行此操作</p>
<pre><code>import requests
headers = {
'User-Agent': 'Mozilla/5.0',
'Referer': 'https://www.investagrams.com/'
}
url = 'https://webapi.investagrams.com/InvestaApi/Stock/ViewStock?stockCode=ac&defaultExchangeType=1&cv=1622292000-0-'
r = requests.get(url, headers=headers)
#print(r.status_code)
#print(r.json())
data = r.json()
print('Last:', data['LatestStockHistory']['Last'])
for key, value in data['LatestStockHistory'].items():
print(key, '=', value)
</code></pre>
<p>结果:</p>
<pre><code>Last: 779
StockId = 79
Date = 2021-05-28T00:00:00+08:00
DateShortString = 05/28/2021
DateTimeString = May 28, 2021 12:00:00 AM
Last = 779
LastString = 779.00
Open = 780
Close = 800
Change = -21
ChangeString = -21.00
ChangePercentage = -2.62
ChangePercentageString = -2.62%
Low = 768
High = 789.5
Average = 778.14
Volume = 457590
Value = 356067865
Trades = 4227
MarketCap = 482.74B
NetForeign = -3091405
LastUpdateTime = 2021-05-28T15:30:00
LastUpdateTimeString = May 28, 2021 03:30:00 PM
</code></pre>