Я хотел бы очистить веб-страницу и просто вернуть идентификатор контейнера GTM (в приведенном ниже примере это будет GTM-5LS3NZ).Код не должен искать точный идентификатор контейнера, а скорее образец, так как я буду использовать его на нескольких сайтах.
До сих пор я мог искать голову и печатать весь фрагмент текста, содержащий GTM, но я нене знаю, как отформатировать поиск и регулярное выражение, чтобы просто вернуть GTM-5LS3NZ (в этом примере).
import urllib3
import re
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
response = http.request('GET', "https://www.observepoint.com/")
soup = BeautifulSoup(response.data,"html.parser")
GTM = soup.head.findAll(text=re.compile(r'GTM'))
print(GTM)
Примечание. Идентификатор GTM может содержать 6 или 7 буквенно-цифровых символов, поэтому я ожидаю, чторегулярное выражение для идентификатора контейнера должно быть что-то вроде ^ GTM- [A-Z0-9] - я не знаю, как указать 6 или 7 символов.
Разъяснение того, что я после.Если вы запустите приведенный выше код, вы получите следующее.
["(function (w, d, s, l, i) {\n w[l] = w[l] || [];\n w[l].push({\n 'gtm.start': new Date().getTime(),\n event: 'gtm.js'\n });\n var f = d.getElementsByTagName(s)[0],\n j = d.createElement(s),\n dl = l != 'dataLayer' ? '&l=' + l : '';\n j.async = true;\n j.src =\n 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;\n f.parentNode.insertBefore(j, f);\n })(window, document, 'script', 'dataLayer', 'GTM-5LS3NZ');"]
Все, что мне нужно, это GTM-5LS3NZ.