Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
No puedo hacer que mi secuencia de comandos procese la respuesta del servidor creada localmente de la manera correcta

He usado un script para ejecutar selenium localmente para poder usar la respuesta (derivada de selenium) dentro de mi araña.

Este es el servicio web donde el selenio se ejecuta localmente:

 from flask import Flask, request, make_response from flask_restful import Resource, Api from selenium import webdriver from selenium.webdriver.chrome.options import Options app = Flask(__name__) api = Api(app) class Selenium(Resource): _driver = None @staticmethod def getDriver(): if not Selenium._driver: chrome_options = Options() chrome_options.add_argument("--headless") Selenium._driver = webdriver.Chrome(options=chrome_options) return Selenium._driver @property def driver(self): return Selenium.getDriver() def get(self): url = str(request.args['url']) self.driver.get(url) return make_response(self.driver.page_source) api.add_resource(Selenium, '/') if __name__ == '__main__': app.run(debug=True)

Esta es mi araña scrapy que aprovecha esa respuesta para analizar el título de una página web.

 import scrapy from urllib.parse import quote from scrapy.crawler import CrawlerProcess class StackSpider(scrapy.Spider): name = 'stackoverflow' url = 'https://stackoverflow.com/questions/tagged/web-scraping?sort=newest&pageSize=50' base = 'https://stackoverflow.com' def start_requests(self): link = 'http://127.0.0.1:5000/?url={}'.format(quote(self.url)) yield scrapy.Request(link,callback=self.parse) def parse(self, response): for item in response.css(".summary .question-hyperlink::attr(href)").getall(): nlink = self.base + item link = 'http://127.0.0.1:5000/?url={}'.format(quote(nlink)) yield scrapy.Request(link,callback=self.parse_info,dont_filter=True) def parse_info(self, response): item = response.css('h1[itemprop="name"] > a::text').get() yield {"title":item} if __name__ == '__main__': c = CrawlerProcess() c.crawl(StackSpider) c.start()

El problema es que el script anterior me da el mismo título varias veces y luego otro título y así sucesivamente.

¿Qué posible cambio debo hacer para que mi script funcione correctamente?

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda