Pregunta

He estado usando XPath con scrapy al texto extracto de etiquetas HTML en línea, pero cuando lo hago me sale caracteres adicionales unidos. Un ejemplo está tratando de extraer un número, como "204" de una etiqueta <td> y conseguir [u'204']. En algunos casos es mucho peor. Por ejemplo tratar de extraer "1 - Mathoverflow" y en lugar de conseguir [u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']. ¿Hay una manera de evitar esto, o recortar las cuerdas de manera que los caracteres adicionales enviaban una parte de la cadena? (El uso de elementos para almacenar los datos). Parece que tiene algo que ver con el formato, así que ¿cómo consigo XPath para no recoger esas cosas?

¿Fue útil?

Solución

Lo que hace la línea de mirada código como el que vuelve [u'204']? Parece que lo que está siendo devuelto es una lista de Python que contiene una cadena Unicode con el valor que desee. Nada hay wront - sólo subíndice. En cuanto a los retornos de carro, saltos de línea y las pestañas, como Albert Tung acaba de responder, la tira se llevará a cabo.

Probablemente

my_answer = item1['Title'][0].strip()

O si usted está contando con varios partidos

for ans_i in item1['Title']:
    do_something_with( ans_i.strip() )

Otros consejos

La función XPath estándar normalize-space() tiene exactamente el efecto deseado.

Borra el espacio delantero y trasero wite y sustituye cualquier espacio en blanco interior con un solo espacio.

Por lo tanto, se puede utilizar

normalize-space(someExpression)

Uso tira () para eliminar el ataque y de salida espacios en blanco.

>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top