Extraiga datos de JustDial usando Selenium

Veamos cómo extraer datos de Justdial usando Selenium y Python. Justdial es una empresa que ofrece búsqueda local de diferentes servicios en India por teléfono, sitio web y aplicaciones móviles. En este artículo estaremos extrayendo los siguientes datos:

  • Número de teléfono
  • Nombre
  • Dirección

Luego podemos guardar los datos en un archivo CSV.

Acercarse:

  1. Importe los siguientes módulos: webdriver de selenium , ChromeDriverManager , pandas , time y os .
  2. Use el método driver.get() y pase el enlace del que desea obtener información.
  3. Utilice el método driver.find_elements_by_class_name() y pase ‘store-details’.
  4. Crear instancias de listas vacías para almacenar los valores.
  5. Repita StoreDetails y comience a obtener los detalles individuales que se requieren.
  6. Cree una función definida por el usuario strings_to_number() para convertir la string extraída en números.
  7. Muestre los detalles y guárdelos como un archivo CSV de acuerdo con los requisitos.

Python3

# importing the modules
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
import pandas as pd
import time
import os
 
# driver.get method() will navigate to a page given by the URL address
driver.get("https://www.justdial.com/Delhi/Ceiling-Tile-Dealers-Armstrong/nct-11271379")
 
# the user-defined function
def strings_to_num(argument):
     
    switcher = {
        'dc': '+',
        'fe': '(',
        'hg': ')',
        'ba': '-',
        'acb': '0',
        'yz': '1',
        'wx': '2',
        'vu': '3',
        'ts': '4',
        'rq': '5',
        'po': '6',
        'nm': '7',
        'lk': '8',
        'ji': '9'
    }
    return switcher.get(argument, "nothing")
 
# fetching all the store details
storeDetails = driver.find_elements_by_class_name('store-details')
 
# instantiating empty lists
nameList = []
addressList = []
numbersList = []
 
# iterating the storeDetails
for i in range(len(storeDetails)):
     
    # fetching the name, address and contact for each entry
    name = storeDetails[i].find_element_by_class_name('lng_cont_name').text
    address = storeDetails[i].find_element_by_class_name('cont_sw_addr').text
    contactList = storeDetails[i].find_elements_by_class_name('mobilesv')
     
    myList = []
     
    for j in range(len(contactList)):
         
        myString = contactList[j].get_attribute('class').split("-")[1]
     
        myList.append(strings_to_num(myString))
 
    nameList.append(name)
    addressList.append(address)
    numbersList.append("".join(myList))
     
# initialize data of lists.
data = {'Company Name': nameList,
        'Address': addressList,
        'Phone': numbersList}
 
# Create DataFrame
df = pd.DataFrame(data)
print(df)
 
# Save Data as .csv
df.to_csv('demo1.csv', mode = 'a', header = False)

Producción:

 
 
 
 

Publicación traducida automáticamente

Artículo escrito por alokm014 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *