How can I retrieve a JavaScript variable using Python?
11,671
Solution 1
Step by step this is what you need to do.
- extract the json string from the file/html string. you need to get the string between the
<script>
tags first, and then the variable definition - extract the parameter from the json string.
Here is a demo.
from xml.etree import ElementTree
import json
tree = ElementTree.fromstring(js_String).getroot() #get the root
#use etree.find or whatever to find the text you need in your html file
script_text = tree.text.strip()
#extract json string
#you could use the re module if the string extraction is complex
json_string = script_text.split('var exampleVar =')[1]
#note that this will work only for the example you have given.
try:
data = json.loads(json_string)
except ValueError:
print "invalid json", json_string
else:
value = data['abo']['param3']['param3b1']
Solution 2
You need to use the JSON module.
import json
myJson = json.loads(your_json_string)
param3b1 = myJson['abo']['param3'][1]['param3b1']
JSON module documentation : https://docs.python.org/2/library/json.html
Related videos on Youtube
Comments
-
sylvelk almost 2 years
I'm trying to retrieve a Javascript variable using Python and I'm having some issues...
Here is what the variable looks like :<script type="text/javascript"> var exampleVar = [ {...}, {...}, { "key":"0000", "abo": { "param1":"1" "param2":"2" "param3": [ { "param3a1":"000" "param3a2":"111" }, { "param3b1":"100" "param3b2":"101" } ] } ] </script>
After some research, I discovered that its content was in the JSON format, and I'm new to it...
My problem now is that I would like to retrieve the value of "param3b1" (for example) to use it in my Python program.
How do I do this in Python ?
Thanks !-
jonrsharpe over 9 yearsDid you consider searching for "Python JSON"? Have a look at
json
.
-
-
sylvelk over 9 yearsThanks a lot ! My issue now is how to extract my JSON string from the whole
<script>
and from thevar myVar = my_json_string
... Any idea about this ? I think I should use there
module but I'm not at all familiar with it.