Мне нужно получить скриншоты URL. Скриншоты работают сами. Но есть ошибка с размерами. Когда я устанавливаю ширину и высоту окна и получаю скриншот. Скриншот сделан с неправильным размером. Например я установил размер 1000х600. И это дает мне 990x470.
Вот view.py:
def shots(request):
x = datetime.datetime.now()
time = x.strftime("%Y-%m-%d-%H-%M-%S")
if request.method == 'POST' and 'url' in request.POST:
url = request.POST.get('url', '')
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
width_get = request.POST.get('width', '')
height_get = request.POST.get('height', '')
if width_get is not None and width_get != '':
width = width_get
else:
width = 1600
if height_get is not None and height_get != '':
height = height_get
else:
height = 1000
if url is not None and url != '':
url_parsed = urlparse(url)
scheme = url_parsed.scheme
netloc = url_parsed.netloc
if netloc.startswith('www.'):
netloc = netloc.replace('www.', '')
image_path = "media/" + netloc + "-" + time + ".png"
shot_path = "/media/" + netloc + "-" + time + ".png"
path = "C:/WebDrivers/chromedriver.exe"
driver = webdriver.Chrome(path)
driver.set_window_size(width, height)
driver.get(url)
driver.save_screenshot(image_path)
screenshot = image_path
driver.quit()
var_dict = {
'screenshot': screenshot,
'shot_path':shot_path,
'netloc':netloc,
}
return render(request, 'shots.html', var_dict)
else:
return render(request, 'shots.html')
Вот шаблон
<div class = "container">
<h1>Python Screenshot Generator</h1>
<form class="example" action="{% url 'shots' %}" method="post">
{% csrf_token %}
<input type="text" name="url" size="50" value="{{ full_url }}" placeholder="Enter URL:">
<button type="submit">Generate screenshot</button>
<div class="row">
<div class="col">
<input type="text" name = "width" class="form-control" placeholder="ScreenShot Width">
</div>
<div class="col">
<input type="text" name = "height" class="form-control" placeholder="ScreenShot Height">
</div>
</div>
</form>
{% if screenshot %}
<h2>Screenshot for <a href="{{ netloc }}" target="_blank">{{ netloc }}</a></h2>
<img src="{{ shot_path }}">
{% endif %}
</div>