Как очистить HTML-код от полученного ответа? - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь отсканировать и очистить сайт с помощью копий и всплесков.Я хочу очистить определенный HTML-код от ответа, который появляется на картинке.Вот ответ с заголовками: enter image description here

Вот ответ (html, который я хочу очистить): enter image description here

Я могу найти этот HTML с помощью Inspect Tool.Мой код возвращает HTML, который я вижу с помощью инструмента «Просмотр источника страницы».Таким образом, это означает, что Javascript изменяет код перед его внедрением.Но роль всплеска в том, чтобы запускать JavaScript и возвращать HTML, не так ли?Response.body возвращает исходный код страницы без HTML-кода, который мне нужен, из ответа, который я упомянул выше.

import scrapy
from scrapy_splash import SplashRequest
from bs4 import BeautifulSoup

class NetherSplashSpider(scrapy.Spider):
    name = 'nether_splash'
    download_delay = 10

    custom_settings = {
        'SPLASH_URL': 'http://localhost:8050',
        'DOWNLOADER_MIDDLEWARES': {
            'scrapy_splash.SplashCookiesMiddleware': 723,
            'scrapy_splash.SplashMiddleware': 725,
            'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
        },
        'SPIDER_MIDDLEWARES': {
            'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
        },
        'DUPEFILTER_CLASS': 'scrapy_splash.SplashAwareDupeFilter',
    }

    def start_requests(self):
        yield SplashRequest(
            url='https://www.gaslicht.com/stroom-vergelijken?partial=true&aanbieders=eneco&skip=0&take=10&_=1559207102962',
            callback=self.parse,
        )


    def parse(self, response):



        filename = 'splash.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

1 Ответ

2 голосов
/ 30 мая 2019

Чтобы загрузить полную страницу, вам нужно добавить параметр «wait».Попробуйте добавить "args = {'wait': 1.0}" в ваш SplashRequest.

yield SplashRequest(
            url='https://www.gaslicht.com/stroom-vergelijken?partial=true&aanbieders=eneco&skip=0&take=10&_=1559207102962',
            callback=self.parse, args={'wait': 1.0}
        )
...