How can I retrieve a JavaScript variable using Python?

11,671

Solution 1

Step by step this is what you need to do.

  1. 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
  2. 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

Share:
11,671

Related videos on Youtube

sylvelk
Author by

sylvelk

Student in Switzerland

Updated on July 12, 2022

Comments

  • sylvelk
    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
      jonrsharpe over 9 years
      Did you consider searching for "Python JSON"? Have a look at json.
  • sylvelk
    sylvelk over 9 years
    Thanks a lot ! My issue now is how to extract my JSON string from the whole <script> and from the var myVar = my_json_string ... Any idea about this ? I think I should use the re module but I'm not at all familiar with it.