Integrando Selenium com Scrapy para páginas dinâmicas
Ao raspar sites complexos com conteúdo dinâmico, Selenium, uma estrutura de automação da web, pode ser integrado com Scrapy, uma estrutura de web scraping, para superar desafios.
Integrando Selenium em um Scrapy Spider
Para integrar o Selenium ao seu Scrapy spider, inicialize o Selenium WebDriver dentro do método __init__ do spider.
import scrapy from selenium import webdriver class ProductSpider(scrapy.Spider): name = "product_spider" allowed_domains = ['example.com'] start_urls = ['http://example.com/shanghai'] def __init__(self): self.driver = webdriver.Firefox()
Em seguida, navegue até o URL dentro do método de análise e utilize os métodos Selenium para interagir com a página.
def parse(self, response): self.driver.get(response.url) next = self.driver.find_element_by_xpath('//td[@class="pagn-next"]/a') next.click()
Ao utilizar esta abordagem, você pode simular interações do usuário, navegar em páginas dinâmicas e extrair os dados desejados.
Alternativa ao uso de Selenium com Scrapy
Em certos cenários, usar o middleware ScrapyJS pode ser suficiente para lidar com partes dinâmicas de uma página sem depender do Selenium. Por exemplo, veja o seguinte exemplo:
# scrapy.cfg DOWNLOADER_MIDDLEWARES = { 'scrapyjs.SplashMiddleware': 580, }
# my_spider.py class MySpider(scrapy.Spider): name = 'my_spider' start_urls = ['http://example.com/dynamic'] def parse(self, response): script = 'function() { return document.querySelectorAll("div.product-info").length; }' return Request(url=response.url, callback=self.parse_product, meta={'render_javascript': True, 'javascript': script}) def parse_product(self, response): product_count = int(response.xpath('//*[@data-scrapy-meta]/text()').extract_first())
Esta abordagem emprega renderização JavaScript usando ScrapyJS para obter os dados desejados sem usando Selênio.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3