Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
Cómo analizar el contenido de javascript con BeautifulSoup

Estoy luchando para analizar algunos var en mi HTML

Aquí está el ejemplo de HTML:

 <script type="text/javascript"> var ASPath = "\/modules\/pm_advancedsearch4\/"; var ASSearchUrl = "https:\/\/golf-land.fr\/module\/pm_advancedsearch4\/advancedsearch4"; var as4_orderBySalesAsc = "Meilleures ventes en dernier"; var as4_orderBySalesDesc = "Meilleures ventes en premier"; var controller = "my-account"; </script>

He intentado hacer esto:

 soup = BeautifulSoup(s.text, 'html5lib') soup = BeautifulSoup(str(soup.find_all('script')[2]), "html.parser") pattern = re.compile(r"var controller = '(.*?)';$", re.MULTILINE | re.DOTALL) print(pattern) script = soup.find("script", text=pattern) print(pattern.search(script.text).group(1))

Mi objetivo era obtener "mi cuenta", pero todo lo que obtuve fue

 re.compile("var controller = '(.*?)';$", re.MULTILINE|re.DOTALL) Traceback (most recent call last): File "main.py", line 47, in <module> print(pattern.search(script.text).group(1)) AttributeError: 'NoneType' object has no attribute 'text'

La línea 47 se refiere a la última línea de mi código.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Está confuso en cuanto a lo que es usar bs4 para obtener etiquetas específicas y analizar una subcadena de ese contenido.

El patrón que está buscando busca una coincidencia exacta, mientras que lo que quiere es encontrar ese contenido que contiene la subcadena (para obtener la etiqueta específica).

Entonces, su patrón de expresión regular debe ser pattern = re.compile(r"var controller = (.*?);$", re.MULTILINE | re.DOTALL) para obtener esa etiqueta <script> como un objeto BeautifulSoup.

Además, su patrón busca comillas simples ' cuando no hay ninguna en "my-account" .

Pero realmente lo que desea es extraer esa subcadena después de obtener la etiqueta específica.

Prueba esto:

 from bs4 import BeautifulSoup import re soup = BeautifulSoup(s.text, 'html5lib') script = soup.find_all('script')[2] pattern = re.compile(r"var controller = (.*?);$", re.MULTILINE | re.DOTALL) #print(pattern) scriptParse = re.search(pattern, str(script)) print(scriptParse.groups(1)[0])

Producción:

 "my-account"
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!