In einem meiner Skripts verwende ich urllib2
und BeautifulSoup
, um eine HTML-Seite zu analysieren und ein <script>
-Tag zu lesen. DieseParsing Javascript mit Python
ist, was ich bekommen:
<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"
...
</script>
Mein Ziel ist es, die JSON in der x_data
Variable zu lesen, und ich weiß nicht, wie es richtig zu machen. ich allerdings aus:
- Umrechnen in String und entfernen Sie die ersten Zeichen an den {und gleich für last}
- Reguläre Ausdrücke verwenden mit so etwas wie und nehmen Sie die erste Gruppe
- '{*.} Etwas anderes ?
Ich weiß nicht, ob diese effizient sind und ob es andere Möglichkeiten gibt, es auf eine nette Art und Weise zu tun.
Denken Sie, dass eine Methode der anderen vorzuziehen ist? jede Methode, die mir nicht bewusst ist?
Vielen Dank im Voraus für einen Rat.
EDIT:
Nach Beratung erhalte ich die Regexp Lösung, aber ich kann trotz Anwendung re.MULTILINE in mehreren Zeilen suchen:
string1 = '<script>
var x_data = {
logged: logged,
lengthcarrousel: 2,
products : [
{
"serial" : "106541823"}
]
};
</script>'
p = re.compile(r'\{.*\};',re.MULTILINE);
m = p.search(string1)
if m:
print m.group(0)
else:
print "Error !"
ich einen immer bekam "Fehler!".
EDIT2:
funktioniert gut mit re.DOTALL
.
https://pypi.org/project/jsonfinder/ –
Hängt davon ab, wie die Eingabe variiert. Wenn es immer 'var x_data = ...' sein soll, kannst du das Bit, das am Anfang der Zeichenfolge verankert ist, einfach regex ersetzen. Ihre Lösung könnte irgendwo zwischen so einfach wie so kompliziert wie das Einbetten eines JS-Parsers liegen. –
Hallo, es wird immer 'var x_data = ...' sein. Danke, ich schreibe gerade die regexp-Lösung. –