Я пытаюсь очистить сайт, делая скриншот каждой страницы. До сих пор мне удалось собрать воедино следующий код:
import json
import base64
import scrapy
from scrapy_splash import SplashRequest
class ExtractSpider(scrapy.Spider):
name = 'extract'
def start_requests(self):
url = 'https://stackoverflow.com/'
splash_args = {
'html': 1,
'png': 1
}
yield SplashRequest(url, self.parse_result, endpoint='render.json', args=splash_args)
def parse_result(self, response):
png_bytes = base64.b64decode(response.data['png'])
imgdata = base64.b64decode(png_bytes)
filename = 'some_image.png'
with open(filename, 'wb') as f:
f.write(imgdata)
На сайт попадает нормально (пример, stackoverflow) и возвращает данные для png_bytes, но при записи в файл - возвращает битое изображение (не загружается).
Есть ли способ исправить это или найти более эффективное решение? Я читал, что Splash Lua Scripts может это сделать, но не смог найти способ реализовать это. Спасибо.