python - 使用 beautifulsoup 隐藏元素进行网页抓取
问题描述
我正在尝试使用以下网址抓取BeautifulSoup
:
https ://www.investopedia.com/markets/stocks/aapl/#Financials
我试图解析我用inspect找到的这个部分:
<div class="value">
<div class="marker position" style="left: 89.25%;"></div>
<div class="text position" style="left: 89.25%;">1.43</div>
</div>
MyCode如下:
import bs4 as bs
import requests
def load_ticker_invest(ticker):
resp = requests.get('https://www.investopedia.com/markets/stocks/{}/#Financials'.format(ticker))
soup = bs.BeautifulSoup(resp.text, 'html.parser')
trend = soup.div.find_all('div', attrs={'class':'value'})
return trend
print (load_ticker_invest('aapl'))
我得到的结果是一个空白列表:
[]
我该如何解决这个问题?
解决方案
该站点使用内部 API 来获取这些数据,此 API 调用需要一些令牌,这些令牌嵌入在页面https://www.investopedia.com/markets/stocks/aapl的一些 Javascript 脚本中,因此您需要首先废弃这些值使用一些正则表达式,然后在 API 调用中使用它们
title=aapl
IFS=' ' read token token_userid < <(curl -s "https://www.investopedia.com/markets/stocks/$title/" | \
tr -d '\n' | \
sed -rn "s:.*Xignite\(\s*'([A-Z0-9]+)',\s*'([A-Z0-9]+)'.*:\1 \2:p")
curl -s "https://factsetestimates.xignite.com/xFactSetEstimates.json/GetLatestRecommendationSummaries?IdentifierType=Symbol&Identifiers=$title&UpdatedSince=&_token=$token&_token_userid=$token_userid" | \
jq -r '.[].RecommendationSummarySet | .[].RecommendationScore'
使用蟒蛇:
import requests
import re
ticker = 'aapl'
r = requests.get('https://www.investopedia.com/markets/stocks/{}/'.format(ticker))
result = re.search(r".*Xignite\(\s*'([A-Z0-9]+)',\s*'([A-Z0-9]+)'", r.text)
token = result.group(1)
token_userid = result.group(2)
r = requests.get('https://factsetestimates.xignite.com/xFactSetEstimates.json/GetLatestRecommendationSummaries?IdentifierType=Symbol&Identifiers={}&UpdatedSince=&_token={}&_token_userid={}'
.format(ticker, token, token_userid)
)
print(r.json()[0]['RecommendationSummarySet'][0]['RecommendationScore'])
推荐阅读
- r - R:求和时的错误?
- python - 训练测试拆分以确保所有类别都包含在训练集中
- php - 如何使用 GoDaddy 连接数据库?
- azure-devops - 如何在 Ymal 文件中获取动态生命周期服务资产上传 (LCS) 的资产类型和引用变量名称和值
- reactjs - 如何将redux存储持久化到本地存储而不是反应原生的异步存储
- python - python动态继承类
- android - 我的 Android 应用程序允许第一次 google 登录,之后它提供以下错误 ApiException:10:
- javascript - 数据表输入与行相处
- java - 关于spring bean初始化的顺序
- reactjs - redux store 安装 redux-saga 后创建 store 时出错