Асинхронная валидация с помощью pytnon3

381 просмотра
0
0 Комментариев

Как отвалидировать несколько сайтов одновременно. Сразу на нескольких сервисах?
Произойдет валидация сайта, если я отправлю самый обыкновенный get-запрос на
https://validator.w3.org/check?uri=[ссылка]

r = requests.get('https://validator.w3.org/check?uri=http://shost-craft.su')

Или же надо посылать специальные headers или специальный запрос, который даст сайту знать что надо именно отвалидировать сайт. По типу:

`r = requests.get('https://validator.w3.org/check?uri=http://shost-craft.su', headers={'Тут что-то для валидации'}`
 print(r.headers)

Пришли headers:

{'Accept-Encoding': 'gzip',
 'Access-Control-Allow-Headers': 'content-type',
 'Access-Control-Allow-Origin': '*',
 'Cache-Control': 'no-cache',
 'Content-Encoding': 'gzip',
 'Content-Type': 'text/html; charset=UTF-8',
 'Date': 'Sun, 07 May 2017 20:17:42 GMT',
 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT',
 'Public-Key-Pins': 'pin-sha256="cN0QSpPIkuwpT6iP2YjEo1bEwGpH/yiUn6yhdy+HNto="; '
                    'pin-sha256="WGJkyYjx1QMdMe0UqlyOKXtydPDVrk7sl2fV+nNm1r4="; '
                    'pin-sha256="LrKdTxZLRTvyHM4/atX2nquX9BeHRZMCxg3cf4rhc2I="; '
                    'max-age=864000',
 'Server': 'Jetty(9.2.9.v20150224)',
 'Strict-Transport-Security': 'max-age=15552015; preload',
 'Transfer-Encoding': 'chunked',
 'Vary': 'Accept-Encoding, User-Agent',
 'X-Frame-Options': 'deny',
 'X-XSS-Protection': '1; mode=block'}

Но я не вижу никакого смысла в данных headers. Или тут все таки есть что-то что обозначает прошло валидацию или нет?

Так же есть сам r.text:

Showing results for http://shost-craft.su/ - Nu Html Checker

This tool is an ongoing experiment in better HTML checking, and its behavior remains subject to change

Showing results for http://shost-craft.su/

Checker Input

Show

  1. Error: style element between head and body.

    From line 14, column 5; to line 14, column 11

    head> <style> b

  2. Fatal Error: Cannot recover after last error. Any further errors will be ignored.

    From line 14, column 5; to line 14, column 11

    head> <style> b

There were errors.

Used the schema for HTML with SVG 1.1, MathML 3.0, RDFa 1.1, and ITS 2.0 support.

Used the HTML parser. Externally specified character encoding was UTF-8.

Total execution time 340 milliseconds.


About this checkerReport an issueVersion: 17.5.7


Добавить комментарий

1 Ответы

Python Опубликовано 14.12.2018
0

Как насчет такой валидации c помощью aiohttp и asyncio? Код:

import random
import asyncio
from aiohttp import ClientSession
 
async def fetch(url, session):
    async with session.get(url) as response:
        delay = response.headers.get("DELAY")
        date = response.headers.get("DATE")
        print("{}:{} with delay {}".format(date, response.url, delay))
        return await response.read()
 
 
async def bound_fetch(sem, url, session):
    async with sem:
        await fetch(url, session)
 
 
async def run(r):
    site = "http://shost-craft.su"
 
 
    with open("C:\\cruelnetwork\\cruel.need\\wolfs.txt") as werewolves:
            array = [row.strip()+site for row in werewolves]
    for url in array:
        tasks = []
 
        sem = asyncio.Semaphore(1000)
        print(url)
 
        async with ClientSession() as session:
            for i in range(r):
 
                task = asyncio.ensure_future(bound_fetch(sem, url.format(i), session))
                tasks.append(task)
 
            responses = asyncio.gather(*tasks)
            await responses
 
number = 10
loop = asyncio.get_event_loop()
 
future = asyncio.ensure_future(run(number))
loop.run_until_complete(future)

Нашел https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html. Или тут лучше что-то подправить? 🙂

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up