 |

22.10.2021, 00:23
|
|
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами:
3197792
Репутация:
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[S] невозможен[/S]
3) Если на странице видите число -1, то на ссылку зайти вообще не вышло.
3) Если страница подгружает только HTML маркировку, без CSS - парсингу это никак не помешает, возможно.
4) Если страница загружается полностью со всеми стилями - преград для парсинга вообще нет.
*** Если страница долго грузится, то зайдите в html код, скорее всего там всё есть. Но для достоверности лучше подождать пока она загрузится.
|
|
|

22.10.2021, 00:32
|
|
Флудер
Регистрация: 09.08.2015
Сообщений: 2,375
С нами:
5663810
Репутация:
233
|
|
А что за модули fake_headers и fake_useragent? Ты о них не сказал в теме, да и мне кажется можно обойтись без них, просто вписать headers в реквест сразу (User-Agent, куки и бла-бла-бла)
|
|
|

22.10.2021, 00:56
|
|
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами:
3197792
Репутация:
83
|
|
Сообщение от 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
|
|
Постоянный
Регистрация: 19.10.2015
Сообщений: 300
С нами:
5561187
Репутация:
98
|
|
это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
|
|
|

22.10.2021, 01:31
|
|
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами:
4686777
Репутация:
183
|
|
сайты "не поддающиеся парсингу" скорее всего содержат джаваскрипт хрень, которую requests не в состоянии переварить. ты какой-то ерундой занимаешься, хз зачем твой инструмент нужен вообще
Сообщение от maketoshka
это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
видимо, проверка на редирект, лол
|
|
|

22.10.2021, 11:11
|
|
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами:
3197792
Репутация:
83
|
|
Сообщение от Rei
сайты "не поддающиеся парсингу" скорее всего содержат джаваскрипт хрень, которую requests не в состоянии переварить.
Можно было просто вот так написать, я ж написал что оно может не пригодиться, а ты решил свои пять копеек вставить) При чем тут джаваскрипт когда на сайтах по типу яндекса в html есть контейнеры
captcha при парсе?
Сообщение от maketoshka
это же просто проверка на то, ответил ли сервер статусом 200
как оно связано с капчей?
А много сайтов отвечают с другим статусом?) я вот просто не понимаю когда я чётко расписываю цель, а потом вижу вот это
|
|
|

22.10.2021, 15:20
|
|
Участник форума
Регистрация: 14.05.2019
Сообщений: 162
С нами:
3684756
Репутация:
28
|
|
Сделай так, чтобы после парса открылась страница в selenium, ту которую ты спарсил.
|
|
|

22.10.2021, 18:51
|
|
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами:
3197792
Репутация:
83
|
|
Сообщение от HackerARZ1
Сделай так, чтобы после парса открылась страница в selenium, ту которую ты спарсил.
Зачем?
|
|
|

26.10.2021, 13:30
|
|
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами:
6522707
Репутация:
83
|
|
Сообщение от SOLO WARRIOR
Зачем?
Хах, мне тоже стало интересно. Зачем после открывать в селениуме? 😀
Если можно просто открыть в селениуме без всего, что написал ТС
|
|
|
|
 |
Предыдущая тема
Следующая тема
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|