2016-11-21 191 views
0

我需要两个信息生成的URL发送POST请求到服务器:api_token和CID,你可以在JS代码波纹管看到:如何使用Requests模块提取JavaScript获取的信息?

// Run query 
fetch(`/ajax/gw-light.php?api_version=1.0&api_token=${encodeURIComponent(config.get('checkForm'))}&input=3&cid=${cid || id}` 

我可以通过解析HTML获得令牌,但'cid'由JavaScript中的函数提取。有什么办法只通过请求获得这个?

我知道硒,但它非常非常慢。请求直接转到该点。

+0

美丽的汤 - https://www.crummy.com/software/BeautifulSoup/bs4/doc/ –

+0

@omri_saadon,正如我所说的'cid'是由JS生成的,而不是HTML。我只能通过BeautifulSoup获得令牌。 –

回答

0

你不能用Python请求来做到这一点,你将需要使用无头浏览器,因为Python Requests不执行JavaScript。您可能能够看到该代码正在执行的位置,例如,如果有一个API调用来获取此令牌,则可以使用Python请求复制它。

底线是Python请求和BeautifulSoup不执行JavaScript它只是HTTP而不是浏览器JS引擎。

+0

“api call”是指Network标签中的'Initiator'(Chrome DevTools)?在post请求中,有一个发起者调用第244行中名为“api.js”的js代码。你的意思是我可以用python语言“翻译”那部分代码以获得我想要的相同值?对不起,我还是noob。 –

+0

是的,您可以使用Python请求复制任何这些http调用,只是痛苦地找出需要发送的头文件,cookie和表单数据等等。 –