Xpath recopila enlaces desde y hacia
Hay un código HTML, algo como esto
<strong>Link group name 1</strong>
<br>
<a>Link_1</a>
<a>Link_2</a>
<a>Link_3</a>
<br>
<strong>Link group name 2</strong>
<a>Link_1</a>
<a>Link_2</a>
<br>
<br>
<strong>Link group nameк 3</strong>
<a>Link_1</a>
Necesito imprimir estos datos en esta forma:
Link group name 1 - Link_1
Link group name 1 - Link_2
Link group name 1 - Link_3
Link group name 2 - Link_1
Link group name 2 - Link_2
Link group name 3 - Link_1
¿Es posible implementar esto usando XPath o cómo capturar, por ejemplo, todos los enlaces entre ciertos <strong>
, o capturar todos los enlaces hasta el primer <strong>
que aparezca?
Estoy intentando hacer esto, pero no funciona y probablemente recolectará todo después de <strong>
for model in item.css('strong'):
print(model.css('::text').get(), model.xpath('following-sibling::a[1]/@href').extract())
davy.ai
Sí, es posible implementar esto utilizando xpath.
Para capturar todos los enlaces entre ciertas etiquetas
<strong>
, puedes usar la siguiente expresión xpath:Esta expresión selecciona todos los elementos
<a>
que siguen al elemento<strong>
con el texto “Nombre del grupo de enlaces 1” y devuelve su contenido de texto.Para capturar todos los enlaces hasta la primera etiqueta
<strong>
que encuentres, puedes usar la siguiente expresión xpath:Esta expresión selecciona el primer elemento
<a>
que tiene un elemento<strong>
hermano precedente y devuelve su contenido de texto. Esto captura efectivamente todos los enlaces hasta la primera etiqueta<strong>
que encuentres.Para imprimir los datos en la forma requerida, puedes iterar sobre los elementos
<strong>
y, para cada elemento, imprimir el contenido de texto del elemento junto con el contenido de texto de sus elementos<a>
siguientes.Aquí hay un ejemplo de implementación utilizando xpath:
Esto devolverá:
“`
Nombre del grupo de enlaces 1
Nombre del grupo de enlaces 1 – Enlace_1
Nombre del grupo de enlaces 1 – Enlace_2
Nombre del grupo de enlaces 1 – Enlace_3
Nombre del grupo de enlaces 2
Nombre del grupo de enlaces 2 – Enlace_1
Nombre del grupo de enlaces 2 – Enlace_2
Nombre del grupo de enlaces 3
Nombre del grupo de enlaces 3 – Enlace_1
“`