HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Python
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 22.10.2021, 00:23
pomidorq
Участник форума
Регистрация: 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 код, скорее всего там всё есть. Но для достоверности лучше подождать пока она загрузится.
 
Ответить с цитированием

  #2  
Старый 22.10.2021, 00:32
MrCreepTon
Флудер
Регистрация: 09.08.2015
Сообщений: 2,375
С нами: 5663810

Репутация: 233


По умолчанию

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

  #3  
Старый 22.10.2021, 00:56
pomidorq
Участник форума
Регистрация: 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'
)


 
Ответить с цитированием

  #4  
Старый 22.10.2021, 01:25
манку хлебал
Постоянный
Регистрация: 19.10.2015
Сообщений: 300
С нами: 5561187

Репутация: 98
По умолчанию

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

как оно связано с капчей?
 
Ответить с цитированием

  #5  
Старый 22.10.2021, 01:31
Rei
Познавший АНТИЧАТ
Регистрация: 18.06.2017
Сообщений: 1,632
С нами: 4686777

Репутация: 183


По умолчанию

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

Цитата:
Сообщение от maketoshka  

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

  #6  
Старый 22.10.2021, 11:11
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Цитата:
Сообщение от Rei  

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

captcha при парсе?

Цитата:
Сообщение от maketoshka  

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

  #7  
Старый 22.10.2021, 15:20
HackerARZ1
Участник форума
Регистрация: 14.05.2019
Сообщений: 162
С нами: 3684756

Репутация: 28
По умолчанию

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

  #8  
Старый 22.10.2021, 18:51
pomidorq
Участник форума
Регистрация: 17.04.2020
Сообщений: 184
С нами: 3197792

Репутация: 83
По умолчанию

Цитата:
Сообщение от HackerARZ1  

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

  #9  
Старый 26.10.2021, 13:30
laiser
Участник форума
Регистрация: 21.12.2013
Сообщений: 181
С нами: 6522707

Репутация: 83
По умолчанию

Цитата:
Сообщение от SOLO WARRIOR  

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

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



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.