ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Python (https://forum.antichat.xyz/forumdisplay.php?f=205)
-   -   Проверка сайта на возможность к парсингу через requests. (https://forum.antichat.xyz/showthread.php?t=1405426)

pomidorq 22.10.2021 00:23

Скорее всего эта штука никому и нужна не будет, но, у меня возникали проблемы с парсингом через 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[S]невозможен[/S]

https://forum.antichat.xyz/attachmen...58c1377b64.png

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

https://forum.antichat.xyz/attachmen...93a7aa999e.png

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

https://forum.antichat.xyz/attachmen...b8737c3dbf.png

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


https://forum.antichat.xyz/attachmen...5b7608f814.png


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

MrCreepTon 22.10.2021 00:32

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

pomidorq 22.10.2021 00:56

Цитата:

Сообщение от MrCreepTon

А что за модули 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'
)





манку хлебал 22.10.2021 01:25

это же просто проверка на то, ответил ли сервер статусом 200

как оно связано с капчей?

Rei 22.10.2021 01:31

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

Цитата:

Сообщение от maketoshka

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

видимо, проверка на редирект, лол

pomidorq 22.10.2021 11:11

Цитата:

Сообщение от Rei

сайты "не поддающиеся парсингу" скорее всего содержат джаваскрипт хрень, которую requests не в состоянии переварить.

Можно было просто вот так написать, я ж написал что оно может не пригодиться, а ты решил свои пять копеек вставить) При чем тут джаваскрипт когда на сайтах по типу яндекса в html есть контейнеры

captcha при парсе?

Цитата:

Сообщение от maketoshka

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

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

HackerARZ1 22.10.2021 15:20

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

pomidorq 22.10.2021 18:51

Цитата:

Сообщение от HackerARZ1

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

Зачем?

laiser 26.10.2021 13:30

Цитата:

Сообщение от SOLO WARRIOR

Зачем?

Хах, мне тоже стало интересно. Зачем после открывать в селениуме? 😀

Если можно просто открыть в селениуме без всего, что написал ТС


Время: 19:09