回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。我不是 VB 用戶,但它似乎應該在 JMP 中使用 3 個 newHttpRequests 工作。
VB 代碼中的三個部分以“.send”結尾。
第一部分進入登錄頁面。 不知道為什麼這可能是必要的......它不會給你cookie,但可能需要先訪問它。
第二部分將 post_data 發送到一個 URL,該 URL 將為您提供一個表示您已登錄的 cookie。
JMP 的 httprequest 可能會為您保留該數據。 或者您可能需要告訴 httprequest 將其寫入文件,然後將其從文件中取出。
(2) 從某種 VB 結構中獲取 cookie 的值。
第三部分使用 URL 獲取一些數據並提供 cookie 作為您的憑據。 JMP 可以為您做到這一點。
// get a cookie
try(deletefile("$temp/cookie.txt"));
s = New HTTP Request(
URL( "http://httpbin.org/cookies/set/aaa/bbb" ),
Method( "GET" ),
Headers( {"Accept: application/json", "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"} ),
cookiefile("$temp/cookie.txt")
);
data = s << Send;
show(loadtextfile("$temp/cookie.txt"));
// send a cookie
s = New HTTP Request(
URL( "http://httpbin.org/cookies" ),
Method( "GET" ),
Headers( {
"Accept: application/json",
"Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1",
"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"
} )
);
data = s << Send;
Show( data ); // note the aaa cookie was persisted
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。
我試了很多次,但是沒有辦法直接登錄下載完整的數據。
我在網上找到了一段Python代碼,但還是不行。

回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。class AllcontentSpider(scrapy.Spider):
name = 'allcontent'
headers = {
'Host': 'www.jisilu.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache',
'Cache-Control': 'no-cache', 'Accept': 'application/json,text/javascript,*/*;q=0.01',
'Origin': 'https://www.jisilu.cn', 'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'Referer': 'https://www.jisilu.cn/login/',
'Accept-Encoding': 'gzip,deflate,br',
'Accept-Language': 'zh,en;q=0.9,en-US;q=0.8'
}
def start_requests(self):
login_url = 'https://www.jisilu.cn/login/'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip,deflate,br', 'Accept-Language': 'zh,en;q=0.9,en-US;q=0.8',
'Cache-Control': 'no-cache', 'Connection': 'keep-alive',
'Host': 'www.jisilu.cn', 'Pragma': 'no-cache', 'Referer': 'https://www.jisilu.cn/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36'}
yield Request(url=login_url, headers=headers, callback=self.login,dont_filter=True)
def login(self, response):
url = 'https://www.jisilu.cn/account/ajax/login_process/'
data = {
'return_url': 'https://www.jisilu.cn/',
'user_name': config.username,
'password': config.password,
'net_auto_login': '1',
'_post_type': 'ajax',
}
yield FormRequest(
url=url,
headers=self.headers,
formdata=data,
callback=self.parse,
dont_filter=True
)
def parse(self, response):
for i in range(1,3726):
focus_url = 'https://www.jisilu.cn/home/explore/sort_type-new__day-0__page-{}'.format(i)
yield Request(url=focus_url, headers=self.headers, callback=self.parse_page,dont_filter=True)
def parse_page(self, response):
nodes = response.xpath('//div[@class="aw-question-list"]/div')
for node in nodes:
each_url=node.xpath('.//h4/a/@href').extract_first()
yield Request(url=each_url,headers=self.headers,callback=self.parse_item,dont_filter=True)
def parse_item(self,response):
item = JslItem()
title = response.xpath('//div[@class="aw-mod-head"]/h1/text()').extract_first()
s = response.xpath('//div[@class="aw-question-detail-txt markitup-box"]').xpath('string(.)').extract_first()
ret = re.findall('(.*?)\.donate_user_avatar', s, re.S)回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。這超出了本論壇的範圍。 也許該站點為您想要做的事情提供了一個 API。
我認為該網站使用 javascript 來幫助驗證您是否正確登錄。JMP 不運行 javascript。
驗證碼可能是問題的一部分,並且可能需要人工交互。
如果用戶名或密碼包含特殊字符,則需要某種編碼。
413 錯誤代碼可能意味著其他問題。
Re: What url you need to log in to and how you can get cookies and download data through JSL login.请原谅我的坚持。
这个题目我继续尝试了。
发现这个方式能通过脚本登录、没有登录失败的提示。
但我还是不会分析其中的内容。
谢谢!

回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。
Char To Blob( "~1F~8B~08~00~00~00~00~00~00~03~ABVJ~CEOIU~B2214~D6Q~CA-NW~B2Rz~BEg~D7~D3~0D~13~9FOY~F1~ACc~FB~D3~09~BD~CF:~A6=~ED_~FCd~F7~12%~1D~A5~94~C4~92D%~ABj~A5~E4~C4~82~92~E4~0C 3~AF4'~A7~B6~16~00x&~D1~03E~00~00~00", "ascii~hex" )
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。
kbz_newcookie=1; kbzw__user_login=7Obd08_P1ebax9aXwZKsmLCuprCTpYKvpuXK7N_u0ejF1dSeq8WhwtappqDaotqYq8TYqNStwtSapKusy6rNp8euxa-YrqXW2cXS1qCasZypl6iZmLKgzaLOvp_G5OPi2OPDpZalp5OguNnP2Ojs3Jm6y4Ksj6iyk8-wx5eoopWq6dzjx83G2cLc7JCllKunqJ-ZlMKqyq7Do5PkytvGlMDazOTboIK5yenm4N2Qp5miqaOcspyrkKeRr5fG2cfR092oqpywmqqY; kbzw__Session=mnijj070u2h083ms7ouuah9b22; Hm_lvt_164fe01b1433a19b507595a43bf58262=1652962728,1652966374,1653359409,1653375276; Hm_lpvt_164fe01b1433a19b507595a43bf58262=1653375282
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。是的,我認為該網站的某些安全性依賴於 JavaScript。 我想你會想看看另一篇關於使用 Selenium 的博客文章。 這樣,您就可以編寫一個可以從 jmp 運行的現有瀏覽器的腳本。回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。感謝克雷格!
我懂了。 就是這樣了。
不幸的是,我的計算機上沒有安裝 Python,並且自從使用 JMP 後就沒有安裝 Python。
僅從這個示例來看,VBA 似乎比 Python 更容易為需要登錄的網頁獲取 cookie。

回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。而且,如果您仍想查看它,1F8B 是 gzip 簽名(因為 Accept-Encoding 表示 gzip 等。)您可以使用
blob=Char To Blob( "~1F~8B~08~00~00~00~00~00~00~03~ABVJ~CEOIU~B2214~D6Q~CA-NW~B2Rz~BEg~D7~D3~0D~13~9FOY~F1~ACc~FB~D3~09~BD~CF:~A6=~ED_~FCd~F7~12%~1D~A5~94~C4~92D%~ABj~A5~E4~C4~82~92~E4~0C 3~AF4'~A7~B6~16~00x&~D1~03E~00~00~00", "ascii~hex" );
write(blobtochar(Gzip Uncompress(blob)))
{"code":413,"msg":"缺少用户名或口令","data":{"captcha":null}}
谷歌翻譯: ”缺少用戶名或密碼"
但我真的認為使用 Selenium 可能是一個更好的答案。 使用 Python Selenium 編寫瀏覽器腳本展示瞭如何編寫登錄腳本和瀏覽一些數據,將其加載到數據表中。
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。它不起作用:
<BR />s = New HTTP Request( URL( "https://www.jisilu.cn/login" ), Method( "get" ) );
data = s << Send;
username = "lala";
password = "jmp";
jj = "return_url=http://www.jisilu.cn/&user_name=" || username || "&password=" || password || "&net_auto_login=1&_post_type=ajax";
h = [=> ];
h["Content-Type"] = "application/json";
h["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36";
h["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
s = New HTTP Request( URL( "https://www.jisilu.cn/webapi/account/login_process/" ), Method( "POST" ), JSON( jj ), Headers( h ) );
data1 = s << Send;
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。它做了什麼? 日誌窗口中有任何內容嗎?
顯示(數據);
顯示(s<
顯示(s<
顯示(s<<獲取狀態消息);
顯示(s<<獲取最後一個 URL);
如果您有可用的 Python 代碼,為什麼不使用它呢?
使用 Python 代碼製作 .csv 文件並將其導入 JMP。
您可以使用 Python 接口或 RunProgram 從 JMP 調用它。
使用 VB 程序製作 .csv 文件並導入它也是一樣的。
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。
回复:您需要登錄什麼網址以及如何通過 JSL 登錄獲取 cookie 和下載數據。使用 Python Selenium 編寫瀏覽器腳本
這並不容易,但有可能。 直到你得到一個必須解決的驗證碼。
你需要登錄什麼url以及如何通過JSL登錄獲取cookies和下載數據。大家好!
本網站需要 cookie 才能下載完整數據。 如何通過JSL登錄獲取cookies和下載數據?
謝謝!
VBA
Sub Post()
Dim User_agent, Response_Text, username, password, cookie, json
username = [d1]: password = [f1]
User_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
Post_data = "return_url=https%3A%2F%2Fwww.jisilu.cn%2Fdata%2Fcbnew%2F&user_name=" & jslencode(username) & "&password=" & jslencode(password) & "&aes=1&auto_login=0"
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "get", "https://www.jisilu.cn/login/", False
.setrequestheader "User-Agent", User_agent
.send
.Open "post", "https://www.jisilu.cn/webapi/account/login_process/", False
.setrequestheader "User-Agent", User_agent
.setrequestheader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.send (Post_data)
cookie = Split(.getallresponseheaders, "Set-Cookie: ")(2)
.Open "get", "https://www.jisilu.cn/data/cbnew/detail_hist/" & ([b1] & ""), False
.setrequestheader "User-Agent", User_agent
.setrequestheader "cookie", cookie
.send "fprice=&tprice=&curr_iss_amt=&volume=&svolume=&premium_rt=&ytm_rt=&rating_cd=&is_search=N&market_cd%5B%5D=shmb&market_cd%5B%5D=shkc&market_cd%5B%5D=szmb&market_cd%5B%5D=szcy&btype=&listed=Y&qflag=N&sw_cd=&bond_ids=&rp=50&page=1"
Response_Text = .responsetext
Set json = JsonConverter.ParseJson(Response_Text)
End With
End Sub自動化和腳本質量與工藝工程視窗