Извлечение данных из <script>с BeautifulSoup - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь очистить некоторые данные с помощью Python и Beautifulsoup.Я знаю, как получить текст из тега сценария.Данные между [] являются действительными JSON.

<script>
    dataLayer = 
[  
  {  
  "p":{  
         "t":"text1",
         "lng":"text2",
         "vurl":"text3"
       },
  "c":{  },
  "u":{  },
  "d":{  },
  "a":{  }
  }
]
</script>

Я прочитал этот ответ, и он почти делает то, что я хочу: Извлечение содержимого

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

используйте .text, чтобы получить содержимое внутри тега <script>, затем замените dataLayer =

raw_data = soup.find("script")
raw_data = raw_data.text.replace('dataLayer =', '')
json_dict = json.loads(raw_data)
0 голосов
/ 30 ноября 2018
>>> import re
>>> soup.find_all(re.compile("\[(.*?)\]"))

вы бы сделали это с regex

Вам нужно будет создать норму регулярного выражения, которая принимает текст только между []

здесьссылка общего использования регулярных выражений внутри BeautifulSoup

здесь регулярное выражение для извлечения из квадратных скобок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...