Исходник Проверка сайта на возможность к парсингу через requests.

Josski Molodoi

Активный
Автор темы
182
83
Скорее всего эта штука никому и нужна не будет, но, у меня возникали проблемы с парсингом через requests, решил сделать простой гайд на проверку использования сайтом капчи.
Просто некоторые сайты используют блокировку подобных запросов, и с первого взгляда хер поймёшь, тот ли там HTML или нет.
Python:
import requests
import fake_headers, fake_useragent

class Browser():
    def __init__(self):
        pass

    @classmethod
    def gethtml(cls, url):
        """Write parsed html"""
        with open('index.html', 'w', encoding='utf-8') as file:
            file.write(str(cls.request(url).text))

    @staticmethod
    def request(url):
        """Making fake information"""
        fake_header = fake_headers.Headers(browser='chrome', os='win', headers=True).generate()
        fake_header['User-Agent'] = fake_useragent.UserAgent()['google chrome']

        """Make main requests"""
        try:
            content = requests.get('{0}'.format(url), headers=fake_header)
            if content.status_code == 200:
                return content
            else:
                return -1
        except requests.exceptions.ConnectionError:
            return -1

if __name__ == '__main__':
    browser = Browser()
    browser.gethtml('https://www.blast.hk/threads/105426/')

Технология следующая:
1) Передаём ссылку в метод gethtml
2) Открываем появившийся в директории со скриптом файл index.html

Как понять?:
2) Если страница загружается, но на ней не те объекты - парсинг через requests невозможен
dont.png


3) Если на странице видите число -1, то на ссылку зайти вообще не вышло.
-1.png


3) Если страница подгружает только HTML маркировку, без CSS - парсингу это никак не помешает, возможно.
html_not_css.png


4) Если страница загружается полностью со всеми стилями - преград для парсинга вообще нет.
full_parse.png


*** Если страница долго грузится, то зайдите в html код, скорее всего там всё есть. Но для достоверности лучше подождать пока она загрузится.
 
Последнее редактирование:

MrCreepTon

Неизвестный
Всефорумный модератор
2,202
4,981
А что за модули fake_headers и fake_useragent? Ты о них не сказал в теме, да и мне кажется можно обойтись без них, просто вписать headers в реквест сразу (User-Agent, куки и бла-бла-бла)
 
  • Нравится
Реакции: Михаил Бластов

Josski Molodoi

Активный
Автор темы
182
83
А что за модули fake_headers и fake_useragent? Ты о них не сказал в теме, да и мне кажется можно обойтись без них, просто вписать headers в реквест сразу (User-Agent, куки и бла-бла-бла)
Ты конечно прав, но желательно делая сиксилион запросов указывать разные хэдэры. Я вообще этот класс хотел сделать для своего парсера, поэтому там есть эти либы.

Кому нужно без сторонних либ:
Python:
import requests

class Browser():
    def __init__(self):
        pass

    @classmethod
    def gethtml(cls, url):
        """Write parsed html"""
        with open('index.html', 'w', encoding='utf-8') as file:
            file.write(str(cls.request(url).text))

    @staticmethod
    def request(url):
        """Make main requests"""
        try:
            content = requests.get('{0}'.format(url))
            if content.status_code == 200:
                return content
            else:
                return -1
        except requests.exceptions.ConnectionError:
            return -1

if __name__ == '__main__':
    browser = Browser()
    browser.gethtml('https://www.blast.hk')
 

манку хлебал

Потрачен
305
122
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
 

Rei

Известный
Друг
1,611
1,668
сайты "не поддающиеся парсингу" скорее всего содержат джаваскрипт хрень, которую requests не в состоянии переварить. ты какой-то ерундой занимаешься, хз зачем твой инструмент нужен вообще

это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
видимо, проверка на редирект, лол
 

Josski Molodoi

Активный
Автор темы
182
83
сайты "не поддающиеся парсингу" скорее всего содержат джаваскрипт хрень, которую requests не в состоянии переварить.
Можно было просто вот так написать, я ж написал что оно может не пригодиться, а ты решил свои пять копеек вставить) При чем тут джаваскрипт когда на сайтах по типу яндекса в html есть контейнеры
captcha при парсе?

это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
А много сайтов отвечают с другим статусом?) я вот просто не понимаю когда я чётко расписываю цель, а потом вижу вот это
 

HackerARZ1

Активный
163
27
Сделай так, чтобы после парса открылась страница в selenium, ту которую ты спарсил.