我正在嘗試在任何給定時間從圖表篩選器中抓取可用的股票串列。
篩選器示例:https ://chartink.com/screener/15-minute-stock-breakouts
檢查元素選項在 HTML 標記之間(在“td”和“tr”之間)顯示股票名稱。但是當我在 Python 頁面上列印輸出時,缺少股票名稱(在 'td' 和 'tr' 之間沒有可用的名稱)。讓我懷疑 Chartink 網站是否防刮。又或者是我知識有限。
能否請您試一試,并提供建議。如果不是 Python,我能否通過任何其他工具(如 VBA)獲取股票清單?我在 Windows 11 上使用 Microsoft Edge。
下面是代碼。如您所見,我嘗試了不同的方法,但失敗了。
import pandas as pd
# from selenium import webdriver
# from selenium.webdriver.common.by import By
import numpy as np
import schedule
from datetime import datetime
import requests
from bs4 import BeautifulSoup
page = requests.get("https://chartink.com/screener/15-minute-stock-breakouts")
soup = BeautifulSoup(page.content, 'lxml')
print(soup)
# url = 'https://chartink.com/screener/15-minute-stock-breakouts'
# driver = webdriver.Edge(executable_path=r'C:\Users\kashk\Downloads\edgedriver_win64\msedgedriver.exe')
# driver.get(url)
# pd.read_html(driver.find_element(by=By.XPATH, value='//*[@id="DataTables_Table_0"]').get_attribute('outerHTML'))
uj5u.com熱心網友回復:
資料是動態加載的,并且是從 XHR 中檢索的,因此如果您使用 Selenium,您可能必須先等待資料加載。
下面的方法使用 XMLHTTP 方法,似乎對我有用:
Option Explicit
Sub Chartink()
Dim reqObj As Object
Set reqObj = CreateObject("MSXML2.XMLHTTP")
With reqObj
.Open "GET", "https://chartink.com/screener/15-minute-stock-breakouts", False
.Send
Dim reqDoc As Object
Set reqDoc = CreateObject("HTMLFile")
reqDoc.body.innerHTML = .responseText
'Retrieve the CSRF token that is required for XHR later
Dim metaEle As Object
Set metaEle = reqDoc.getElementsByName("csrf-token")(0)
'Retrieve the JSON data
.Open "POST", "https://chartink.com/screener/process", False
.setRequestHeader "x-csrf-token", metaEle.Content
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.Send "scan_clause=( {57960} ( [0] 15 minute close > [-1] 15 minute max( 20 , [0] 15 minute close ) and [0] 15 minute volume > [0] 15 minute sma( volume,20 ) ) ) "
Dim resultDict As Scripting.Dictionary
Set resultDict = JsonConverter.ParseJson(.responseText)
Dim i As Long
For i = 1 To resultDict("data").Count
Debug.Print resultDict("data")(i)("name") & vbTab & resultDict("data")(i)("close") & vbTab & resultDict("data")(i)("volume")
Next i
End With
End Sub
您將需要VBA-JSON和Microsoft Scripting Runtime該JsonConverter.ParseJson方法的參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448282.html
上一篇:網頁抓取-表名
下一篇:不能網頁報廢html表美湯
