回复:您需要登录什么网址以及如何通过 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 和下载数据。而且,如果您仍想查看它,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 和下载数据。感谢克雷格!
我懂了。 就是这样了。
不幸的是,我的计算机上没有安装 Python,并且自从使用 JMP 后就没有安装 Python。
仅从这个示例来看,VBA 似乎比 Python 更容易为需要登录的网页获取 cookie。

回复:您需要登录什么网址以及如何通过 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自动化和脚本质量与工艺工程视窗