Как избавиться от владений Нефтяного фонда США? - PullRequest
0 голосов
/ 08 мая 2020

Я пытался списать активы портфеля для фонда USO здесь: http://www.uscfinvestments.com/holdings/uso

До сих пор я мог добраться только до этого:

import requests
page = requests.get("http://www.uscfinvestments.com/holdings/uso")
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, 'html.parser')
soup.find_all('div', id = 'holdingsTableWrapper')

Тогда я практически ничего не получаю:

    [<div id="holdingsTableWrapper">
 <div id="portfolioTableDiv"></div>
 </div>, <div id="holdingsTableWrapper">
 <div id="holdingsTableDiv"></div>
 </div>]

Кто-нибудь знает, как это обойти?

РЕДАКТИРОВАТЬ:

Я пытаюсь выбросить содержимое эти таблицы: enter image description here

enter image description here

1 Ответ

0 голосов
/ 08 мая 2020

Вызовите API напрямую, потому что сайт загружается через JavaScript. Используя запрос XHR.

import pandas as pd

df = pd.read_json("http://www.uscfinvestments.com/uscfinvestments-template/assets/charts/portfolioHoldings-uso.json").drop(0).drop(columns=['asofdate'])

print(df)

enter image description here

import pandas as pd

df = pd.read_json("http://www.uscfinvestments.com/uscfinvestments-template/assets/charts/portfolioHoldings-uso.json").drop(0).drop(columns=['asofdate'])

print(df)

enter image description here

Примечание: вы можете посмотреть здесь , чтобы понять, как получить вызов XHR.

...