Integre Selenium con Scrapy para la página dinámica Scraping
cuando intente raspar los datos de las páginas web dinámicas usando Scrapy, el proceso de rastreo estándar puede quedarse corto. Este es a menudo el caso cuando la paginación se basa en la carga asincrónica, como hacer clic en un botón "Siguiente" que no modifica la URL. Para superar este desafío, la incorporación de selenio en su araña de Scrapy puede ser una solución efectiva.
colocando selenio en su araña
la ubicación óptima de selenio dentro de su spider depende de los requisitos específicos de rasguños. Sin embargo, varios enfoques comunes incluyen:
Por ejemplo, suponga que desea raspar resultados paginados en eBay. El siguiente fragmento demuestra cómo integrar selenio con Scrapy: Importar Scrapy Desde Selenium Import WebDriver Clase ProductSpider (Scrapy.spider): nombre = "Product_Spider" permitido_domains = ['ebay.com'] start_urls = ['https://www.ebay.com/sch/i.html?_odkw=books& ;_osacat=0&_trksid=p2045573.m570.l1313.tr0.trc0.xpython&_nkw /python& ;_sacat== def __init __ (self): self.driver = webdriver.firefox () Def Parse (Self, Respuesta): self.driver.get (respuesta.url) Mientras que es cierto: next = self.driver.find_element_by_xpath ('// td [@class = "pagn-next"]/a') intentar: Next.click () # Obtener y procesar los datos aquí excepto: romper self.driver.close ()
alternativo: usar sCrapyJS middleware
import scrapy from selenium import webdriver class ProductSpider(scrapy.Spider): name = "product_spider" allowed_domains = ['ebay.com'] start_urls = ['https://www.ebay.com/sch/i.html?_odkw=books&_osacat=0&_trksid=p2045573.m570.l1313.TR0.TRC0.Xpython&_nkw=python&_sacat=0&_from=R40'] def __init__(self): self.driver = webdriver.Firefox() def parse(self, response): self.driver.get(response.url) while True: next = self.driver.find_element_by_xpath('//td[@class="pagn-next"]/a') try: next.click() # Get and process the data here except: break self.driver.close()
En algunos casos, usar el middleware ScrapyJS puede ser suficiente para manejar porciones dinámicas de una página web sin requerir selenio. Este middleware le permite ejecutar JavaScript personalizado dentro del marco Scraph.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3