¡Enséñele a usar Python para crear una búsqueda inteligente de productos Taobao!

 

/1. Introducción/

Con el auge de las compras en línea, muchas tiendas tradicionales se han transformado en negocios en línea, y la aparición del comercio electrónico ha facilitado enormemente nuestras vidas.

/ 2 Objetivo del proyecto /

Busque con un clic a través del programa Python y vaya directamente al destino, rastree los enlaces de productos, nombres de productos y enlaces de imágenes de productos de Taobao, y registre cada operación en el archivo de registro.

/ 3 Preparación del proyecto /

Utilice el editor de texto sublime 3 para escribir el programa, primero mire la interfaz principal después de que se ejecute el programa:

/ 4 Realización de proyectos /

1. Analice la estructura de la página y ponga la información del producto en sus respectivas listas, tome la siguiente tienda como ejemplo.

2. A la antigua, F12, porque estamos buscando el enlace de producto de la tienda, por lo que encontramos tantos productos como sea posible. Por la distribución de la tienda, parece que el bebé recomienda más productos en esta sección, así que Sube todo el contenido de esta sección.

3. Los pasos 1, 2 y 3 de la figura son la información diversa de los productos que queremos rastrear Se puede ver que todos los productos están en la etiqueta dt con la foto de la clase, por lo que debemos extraerlos.

tratar:


              urllib3.disable_warnings () #Eliminar advertencias de urllib3


              # Solicitud de página


              rep = request.get (self.e2.get (), verify = False, timeout = 4) #La verificación del certificado está configurada en FALSE, configura el retardo de acceso


              rep.encoding = 'gbk'


              sopa = BeautifulSoup (rep.content, 'html.parser')


              result = soup.find_all ('dt', class _ = 'photo') #Obtener todos los elementos dt cuya clase es photo


para x en el resultado:


                    tt = x.find_all ('a') #Obtener todos los elementos secundarios bajo dt a


para y en tt:


para x en y:


                               ab = x.find_next_siblings ('img') #Obtener todos los siguientes elementos hermanos img


para z en ab:


                                     \ #Agregue el nombre del producto y el enlace de la imagen del producto a las listas aa y bb


                                     aa.append (z ['alt'])


                                     bb.append ('https:' + z ['data-ks-lazyload'])


                          cc.append ('https:' + y ['href']) # Agregar el enlace del producto a la lista cc


excepto:


regreso

De esta manera, podemos obtener fácilmente el enlace del producto, el nombre del producto y el enlace de la imagen del producto, y luego guardarlos en las listas aa, bb y cc.

/ 5 Interfaz GUI de escritura, interactiva y amigable /

Para que el resultado de la ejecución sea más hermoso, necesitamos crear una interfaz GUI, que debe mencionar el artefacto GUI integrado en Python tkinter.

Bien, volvamos al tema, podemos escribir una interfaz interactiva para encapsularlo en una clase, lo cual es más hermoso.

página de clase:


def __init __ (yo):


self.ti = dt.now (). strftime ("% Y /% m /% d% H:% S:% M")


self.root = tk.Tk () #Inicializar ventana


self.root.title ('Taobao obtiene Business Baby V1.0') # Nombre de la ventana


self.root.geometry ("700x700") #Establecer el tamaño de la ventana


self.root.iconbitmap ('q.ico')


self.root.resizable (ancho = Verdadero, alto = Verdadero) # Establezca si la ventana es variable, el ancho es inmutable, la altura es variable, el valor predeterminado es Verdadero


         \ #Crear etiqueta, texto, color de fondo, fuente (color, tamaño), altura y ancho de la etiqueta


self.label1 = tk.Label (self.root, text = 'Shop homepage:', font = ('宋体', 10), width = 12, height = 2)


         \ #Crear cuadro de entrada, altura de etiqueta, tamaño y color de fuente, modo de visualización de contenido


self.e2 = tk.Entry (self.root, width = 30, show = None, font = ('Arial', 12)) # Mostrar en texto plano


self.label2 = tk.Label (self.root, text = 'Taobao Direct:', font = ('宋体', 10), width = 12, height = 2)


self.e1 = tk.Entry (self.root, ancho = 30, mostrar = Ninguno, fuente = ('Arial', 12))


         \ #Crear eventos de enlace de botón de ancho y alto de contenido de botón


self.b1 = tk.Button (self.root, text = 'parse page', width = 8, height = 1, command = self.parse)


self.b2 = tk.Button (self.root, text = '生成 excel', width = 8, height = 1, command = self.sc)


self.b3 = tk.Button (self.root, text = '淘 宝 搜索', width = 8, height = 1, command = self.search)


self.b4 = tk.Button (self.root, text = 'Cerrar el programa', ancho = 8, alto = 1, comando = self.close)


self.b5 = tk.Button (self.root, text = 'Guardar registro', ancho = 8, alto = 1, comando = self.log)


         \ #Crear cuadro de texto


self.te = tk.Text (self.root, altura = 40)


self.label1.place (x = 140, y = 30, anchor = 'nw')


self.label2.place (x = 138, y = 70, anchor = 'nw')


         \ #Añadir todas las partes a la interfaz


self.e1.place (x = 210, y = 74, ancla = 'nw')


self.e2.place (x = 210, y = 34, anchor = 'nw')


self.b1.place (x = 160, y = 110, ancla = 'nw')


self.b2.place (x = 240, y = 110, ancla = 'nw')


self.b3.place (x = 320, y = 110, ancla = 'nw')


self.b4.place (x = 400, y = 110, ancla = 'nw')


self.b5.place (x = 480, y = 110, ancla = 'nw')


self.te.place (x = 40, y = 170, ancla = 'nw')


         \ #Establecer el texto inicial del cuadro de entrada


self.e1.delete (0, "fin")


self.e1.insert (0, "Ingrese el producto que desea buscar")


self.root.mainloop ()

Incluso si se crea la interfaz GUI, el diagrama de efectos es el siguiente:

/ 6 Ingrese la dirección de la página de inicio de la tienda de destino, genere datos y exporte a Excel y registre los registros /

1. Obtenga los datos ingresando la dirección de la página de inicio de la tienda de Taobao, por lo que debemos hacer un juicio sobre el programa, porque lo encapsulamos en una clase, por lo que debemos agregar un yo en cada paréntesis de función, el código es el siguiente:

# Analizar contenido web




def parse (auto):


self.res ()


if self.e2.get () == '': #Determina si el valor del cuadro de entrada está vacío


             \ #Insertar valor en el cuadro de texto


self.te.insert ('insertar', '... Por favor ingrese la URL ... \ n')


       elif str (self.e2.get ()). find ('taobao.com') == - 1 o aa == '':


self.te.insert ('insert', '... La dirección es incorrecta ... \ n')


más:


self.te.insert ("insertar", "Analizar la página web de destino:% s \ n \ n"% self.e2.get ())


self.te.insert ("insertar", ".... El inicio del análisis: .... \ n") #INSERT index indica la posición actual del cursor de inserción


self.te.insert ("insertar", "\ n \ n")


para x, y, z en zip (aa, bb, cc): #Combine la lista donde se encuentran los datos


                  resultado = x + '\ n' + y + '\ n' + z + '\ n \ n'


self.te.insert ("insertar", resultado, "\ n \ n") #Insertar en el cuadro de texto


self.te.insert ("insertar", "\ n \ n") #Insertar espacios


self.te.insert ("end", "El análisis está completo ... \ n")

2. Genere un archivo de Excel, el código es el siguiente:

# Guardar resultados para sobresalir


def sc (yo):


self.te.insert ("insertar", "... Comenzar a generar: ... \ n")


       av = {'time': self.ti, 'product name': aa, 'product link': cc, 'product picture link': bb}


       \ #Generar matriz multidimensional de marco de datos


       df = p.DataFrame (av, columnas = ['tiempo', 'nombre del producto', 'enlace del producto', 'enlace de imagen del producto'], índice = rango (len (aa)))


       df.to_excel ('22 .xlsx ', sheet_name =' taobao ') # 生成 excel


self.te.insert ("fin", "。。。。。。。。。。。。。 \ n")

Después de ejecutar el código, se obtiene el siguiente efecto:

3. Genere un archivo de registro, el código es el siguiente:

# Guardar registro
def log (auto):


       ss = str (self.te.get (0.0, 'end')). split ('\ n') # Contenido del cuadro de texto separado


       con open ('1.txt', 'w', encoding = 'utf8') como f: #Guardar registro


para y en rango (len (ss)):


                  rea = str (self.ti) + ss [y] + '\ n'


                  f. escribir (rea)

Después de ejecutar el código, se obtiene el siguiente efecto:

/ 8 El programa directo de la página web de productos básicos de Taobao de búsqueda rápida está cerrado /

Para buscar productos de Taobao con un solo clic, primero buscamos la dirección de búsqueda de Taobao, luego hacemos una solicitud de obtención y le pasamos diferentes valores. La búsqueda general implicará una búsqueda por palabra clave.

Aquí primero encontramos la entrada de búsqueda de Taobao, la dirección es:

https://s.taobao.com/search?q=

Luego pasamos el valor más tarde, porque queremos navegar en el navegador, entonces necesitamos usar el módulo webbrowser, que es específicamente responsable de acceder a la página, y su uso es webbrowser.open (url).

Entonces el código es el siguiente:

# Buscar Productos
def búsqueda (yo):


self.te.insert ("insertar", ".... Abrir el navegador: ..... \ n")


  wb.open ('https://s.taobao.com/search?q='+self.e1.get ()) #Abre el navegador

El último paso es cerrar el programa. el código se muestra a continuación:

# apagar una aplicación
def close (auto):


self.te.insert ("insertar", "..... Cerrar el programa: ..... \ n")


self.root.destroy () #Destruye la ventana

/ 9 Resumen /

1. No se recomienda capturar demasiados datos, lo que puede causar carga en el servidor, solo inténtelo brevemente.

2. Este artículo se basa en el rastreador web de Python y utiliza la biblioteca del rastreador para crear un sistema de búsqueda Taobao simple e inteligente, que se puede operar para generar registros.

3. Este sistema parece muy simple, pero de hecho es un gran desafío para el novato Xiaobai. Incluso algunos tipos grandes son fáciles de caer en el agujero. El análisis de la página principal es un poco complicado y cambiante, y habrá muchas anomalías que te dejarán atrapado. . En términos generales, es un proyecto de práctica bastante buena y es una prueba para ti, espero que te guste.

4. Si necesita el código fuente de este artículo, haga clic en la  palabra clave " código fuente " para obtenerlo. Si cree que es bueno, recuerde dar una estrella.

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43881394/article/details/109027001
Recomendado
Clasificación