Scrapy找不到信息CSS

vpfxa7rd  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(167)

我试图废弃这个网站https://portales.bancochile.cl/personas/beneficios?categoria=marcas特别是卡的信息,但CSS选择器没有找到信息。
一开始我用的是bs4,但现在,我用的是scrapy。这是我的基本蜘蛛。

import scrapy
from ..items import PracticescraperItem
import time

class BanChileSpider(scrapy.Spider):
    name = 'banchile'
    start_urls = [
    'https://portales.bancochile.cl/personas/beneficios?categoria=marcas'
    ]

    def parse(self, response):
        items = PracticescraperItem()
        time.sleep(5)
        title = response.css('.new-beneficios-card-title d-flex::text').extract()
        summary = response.css('.new-beneficios-card-subtitle d-flex::text').extract()

        items['title'] = title
        items['summary'] = summary

        yield items
g52tjvyc

g52tjvyc1#

主要原因是不工作的CSS选择器是网页是动态加载的JavaScript和scrapy不能渲染JS内容,但你可以刮所需的数据从API与scrapy的帮助很容易。

范例:

from bs4 import BeautifulSoup
import scrapy
class TestSpider(scrapy.Spider):
    name = 'test'
    def start_requests(self):
        headers= {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}

        api_url='https://portales.bancochile.cl/personas/contenidos.json?limit=999'

        yield scrapy.Request(
            url=api_url,
            headers=headers,
            callback= self.parse,
            method="GET")

    def parse(self, response):
        resp=response.json()['contenidos']

        #print(resp)

        for item in resp:
            d = item['description']
            soup=BeautifulSoup(d,'html.parser')
            p=soup.select_one('div[class="col-12 pb-2 mb-2"]')
            p=p.get_text(strip=True) if p else None
            #print(p)

            yield {
                'title':item['title'],
                'description':p
                }

输出:

{'title': 'Comenzó Operación Renta 2022', 'description': 'COMENZÓ EL PROCESO DE DECLARACIÓN DE IMPUESTOSPlanifícate 
con Banco de Chile y no dejes pasar ni un día más.Al realizar tu declaración elige inscribir tu cuenta(1)del Banco de Chile para recibir tu abono de forma adelantada.Estas son las fechas oficiales para la devolución de este año 2022:Realízala entre:Recibe tu bono el:1 al 21 de abril12 de mayo22 al 29 de abril19 de mayo30 de abril al 10 de mayo26 
de mayoSi eliges devolución con Cheque o pago por Caja, recibirás tu devolución a partir del 30 de mayo de 2022Te acompañamos en tus decisiones a través de nuestras plataformas digitalesBancochile.clBanchileinversiones.cl'}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': 'Mujeres que inspiran', 'description': None}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': 'Bienvenido', 'description': None}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': 'Hero cuenta hazte cliente', 'description': None}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': 'Solicitud enviada con éxito', 'description': 'Su solicitud se ha realizado con éxito'}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': '¡Tienes un Crédito de Consumo preaprobado!', 'description': 'Tienes un Crédito de Consumo preaprobado,contrátalo 100% online yOBTÉN TU SOAP A COSTO $0Contrata tu Crédito de Consumo y abónalo a tu Cuenta FAN para obtener un100% de dcto. en tu SOAP contratado a través de APP Mi Seguro* hasta el 31 de marzo.(Válido sólo para autos, jeep o station wagon de uso particular)Hasta 60 mesesde plazo3 mesesde gracia2 mesesno consecutivos al año libres de pago 
de cuota¿Cómo obtener tu SOAP a costo $0?Contrata tu Crédito de Consumo con abono a tu Cuenta FAN, desde tu Banco en Línea en bancochile.cl.Ingresa a APP Mi Seguro y contrata tu SOAP 2022para auto, jeep o sw de uso particular. Si no tienes la App, descárgala desde App Store o Google Play.Espera 48 hrs hábiles y verás abonado el monto de tu SOAP en tu Cuenta FAN.*Campaña exclusiva para clientes que hayan contratado un Crédito de Consumo FAN hasta el 31/03/2022 
a las 18hrs. La Devolución de tu SOAP es efectuada HDI Seguros Generales Chile, S.A. sin participación de Banchile Corredores de Seguros Ltda. Stock limitado de 100 SOAP.'}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>
{'title': 'Derecho a retracto (Ley 19.496 artículo 3 bis, literal b)', 'description': None}
2022-10-10 22:45:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://portales.bancochile.cl/personas/contenidos.json?limit=999>

...等等

相关问题