Saltar al contenido

Raspado de telaraña de pitón: Cómo

De nuevo puedes usar Terminal para todo este proceso, pero te animo a usar un editor de texto para que puedas guardar fácilmente tu programa .py que luego puede ser abierto por Terminal. En segundo lugar, si lo desea, puede completar esto en la terminal línea por línea, lo que es genial para la prueba. Lo que significa que no puedes avanzar hasta que tus errores sean resueltos. A veces es más fácil usar la Terminal hasta que sabes que todo está funcionando correctamente, entonces simplemente cópialo en tu programa .py. La elección es tuya.

Escriba lo siguiente.

Raspado de telaraña de pitón: Cómo
Raspado de telaraña de pitón: Cómo
12 solicitudes de importación de bs4 import BeautifulSoup

pitón

Al importar, recuerde que los paquetes son sensibles a las mayúsculas y minúsculas. Si tecleas Beautifulsoup obtendrás un error, así que asegúrate de teclear los paquetes correctamente.

Vamos a buscar un sitio web. Para este ejemplo usaremos algo simple.

Aquí está el URL: Máscara de Vaca

Digamos que este producto es demasiado caro y queremos seguir comprobando si bajará.

Primero, necesitamos que Python se conecte a la URL y luego tome el HTML.

Escriba lo siguiente:

1source = request.get("https://www.amazon.com/CreepyParty-Novelty-Halloween-Costume-Party/dp/B0199PV50K/ref=pd_sim_21_3?_encoding=UTF8&pd_rd_i=B0199PV50K&pd_rd_r=9CN0FB2X3B4YRY4JBSHW&pd_rd_w=yoPuL&pd_rd_wg=AsYde&psc=1&refRID=9CN0FB2X3B4YRY4JBSHW").text

pitón

Sólo tomamos nuestra URL con las solicitudes y la almacenamos en una variable llamada «fuente». Para simplificar, tomamos la información y la colocamos en una caja llamada «fuente» De esa manera cuando la necesitamos, no necesitamos escribir «request.get($0027https://www……..$0027)» una y otra vez, simplemente tenemos que escribir «fuente». Esencialmente, para obtener el código fuente del objeto de respuesta usaremos .text

Siguiente tipo:

1soup = BeautifulSoup(source.html,$0027lxml$0027)

pitón

Estamos tomando el HTML en cadena y lo pasaremos por BeautifulSoup para ser analizado. Ahora, vamos a imprimir el código para ser examinado. En su estado actual de impresión resultaría en un código de aspecto desagradable que sería horrible de leer. Así que, para hacerlo legible como el ejemplo de HTML de arriba, usaremos una función en BeautifulSoup llamada «Prettify».

1print(soup.prettytify())

pitón

Haga clic para revelar el ejemplo de la belleza

Tengan en cuenta que tardará de 2 a 4 segundos en cargarse, mostrará todo el html de esa página, así que dependiendo del sitio puede ser grueso.

Bien, podemos ver que nuestro programa está tomando correctamente el HTML y lo muestra en un formato legible. Ahora encontremos el código HTML que corresponde al precio que queremos raspar. En Google Chrome haga clic con el botón derecho del ratón en el precio «$12.99» y haga clic en inspeccionar.

Haga clic para revelar el ejemplo de inspección

Podemos ver que el precio se encuentra en un span. El código exacto se encuentra abajo.

1<span;$12.99</span;

html

Veámoslo más de cerca. El palmo también tiene una clase única llamada «a-size-medium a-color-precio». Podemos usar eso para encontrar el precio con facilidad.

Vamos a crear una variable llamada «precio». A continuación vamos a utilizar una función de sopa llamada «encontrar» con el fin de localizar el . A continuación, tenemos que colocar la clase y el valor en la variable. Ver más abajo.

1precio = sopa.find($0027span$0027,{$0027class$0027:$0027a-size-medium a-color-price$0027})

pitón

Todo lo que queda es imprimir «precio». No te olvides de incluir «texto», de otra manera sólo se imprimirán los 12,99 dólares.

1print(price.text)

pitón

Aquí está el guión completo.

12345678910de bs4 import BeautifulSoupimport requestssource = requests.get($0027https://www.amazon.com/CreepyParty-Novelty-Halloween-Costume-Party/dp/B0199PV50K/ref=pd_sim_21_3? _encoding=UTF8&pd_rd_i=B0199PV50K&pd_rd_r=9CN0FB2X3B4YRY4JBSHW&pd_rd_w=yoPuL&pd_rd_wg=AsYde&psc=1&refRID=9CN0FB2X3B4YRY4JBSHW$0027). textsoup = BeautifulSoup(source,$0027lxml$0027)#print(soup.prettytify())price = soup.find($0027span$0027,{$0027class$0027:$0027a-size-medium a-color-price$0027})print(price.text)

pitón

Veámoslo en acción. Sólo voy a abrir la Terminal y ejecutar el programa que he guardado. Veámoslo en acción.

Haga clic para revelar el ejemplo de inspección

¡Éxito!

Sí, es sólo un precio, sin embargo, podríamos raspar múltiples secciones o sitios para reunir datos con facilidad. Todo lo que necesitamos hacer es simplemente ejecutar nuestro programa y obtendremos el precio y la mejor parte es que nunca tendremos que abrir un navegador.