私は特定の時間枠の間の資産のためのヤフー・ファイナンスからの履歴データをダウンロードするためのリンクのURLを取得しようとしているが欠落しています。 1999年1月1日から現在まで。BeautifulSoup HTML
だから私はここに行けば、たとえば:
"https://query1.finance.yahoo.com/v7/finance/download/XLB?period1=915177600&period2=1498633200&interval=1d&events=history&crumb=iX6bJ6LfGxc"
私はこの(データのテーブル上の「データのダウンロード」のリンクから)を取得したいと思いますBeautifulSoupとhtmlをhtmlで表示されない保持する必要なタグの問題に実行されています。最初は、find_all( 'a')を使用しようとしても結果が得られず、BeautifulSoupが正しく動作していないと思っていました。しかし、私がHTMLのテキストダンプをしたとき、html要素(親要素内の他のものと一緒に)はそこにはありませんでした。 誰かが何が起こっているのか説明できますか?私が現在取り組んでいることは以下の通りです。
from bs4 import BeautifulSoup
import datetime as dTime
import requests
"""
asset = "Materials"
assetSignal = "XLB"
today = dTime.datetime.now()
startTime = str(int(dTime.datetime(1999, 1, 1, 0, 0, 0).timestamp()))
endTime = str(int(dTime.datetime(today.year, today.month, today.day, 0, 0, 0).timestamp()))
url = "https://finance.yahoo.com/quote/" + assetSignal + "/history?period1=" + startTime + "&period2=" + endTime + "&interval=1d&filter=history&frequency=1d"
"""
url = "https://finance.yahoo.com/quote/XLB/history?period1=915177600&period2=1498633200&interval=1d&filter=history&frequency=1d"
page = requests.get(url)
data = page.content
#soup = BeautifulSoup(data, "html.parser")
soup = BeautifulSoup(data, "lxml")
#soup = BeautifulSoup(data, "xml")
#soup = BeautifulSoup(data, "html5lib")
#Link not found
for link in soup.find_all("a"):
print(link.get("href"))
#Span is empty?
span = soup.find(class_="Fl(end) Pos(r) T(-6px)")
print(span)
print(span.string)
print(span.contents)
for child in span.children:
print(child)
#Other span has children. Target span doesn't
div = soup.find(class_="C($finDarkGray) Mt(20px) Mb(15px)")
print(div)
for child in div.descendants:
print(child)
#Is the tag even there?
with open("soup.txt", "w") as file:
file.write(page.text)
このコードは実行されますか?原因 'URL = httpsを:?//finance.yahoo.com/quote/XLB/history周期1 = 915177600&周期2 = 1498633200&インターバル= 1D&フィルタ=歴史&周波数= 1d'は私に怪しい見えます。 – patrick
コードは機能しますが、そのURLを引用符で囲みますが、実際にダウンロードリンクはスープの結果では利用できません。リンクがjavascriptのようで、BeautifulSoupはJavascriptを実行しないため、JSを介して配信またはレンダリングされるデータは、BeautifulSoupでスクラップした場合には使用できません。セレンやファントムを調べる必要があるかもしれません – davedwards