2016-11-21 195 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和表單數據等等。 –