 |

12.12.2022, 22:07
|
|
Познающий
Регистрация: 13.06.2022
Сообщений: 59
С нами:
2063496
Репутация:
0
|
|
Приветствую. Недавно начал читать данную книгу(баг баунти) и я дошел до парсера.
Как говорит автор:
это просто парсер который собирает список сайтов. Написал код и вот такая ошибка выходит:
а вот сам код:
Python:
Код:
from
bs4
import
BeautifulSoup
as
sp
import
requests
url
=
"https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php"
webpage
=
requests
.
get
(
url
=
url
)
# отправить get запрос
soup
=
sp
(
webpage
.
content
,
'html.parser'
)
tables
=
soup
.
find_all
(
'table'
)
a_tags
=
tables
[
4
]
.
find_all
(
'a'
)
sites_list
=
open
(
"bug-bounty-sites.txt"
,
"w"
)
for
a
in
a_tags
:
sites_list
.
write
(
a
.
get
(
'href'
)
+
'\n'
)
и сайт на котором нужно запарсить - https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php
|
|
|

12.12.2022, 22:51
|
|
Новичок
Регистрация: 18.07.2022
Сообщений: 0
С нами:
2013755
Репутация:
0
|
|
в книгах такое часто может встречаться
|
|
|

12.12.2022, 23:20
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
Это не проблема с индексом, а проблема в незнании пайтона ) Скорее всего сайт определяет что запрос делает программа и отдаёт ошибку 403 - Forbidden: Access is denied.
Не нужно тупо копировать из книжки скрипты, так как парсер настраивается под каждый сайт индивидуально.
P.S. Проверил, так и есть - 403. Лечится легко, нужно добавить в код юзерагента.

|
|
|

12.12.2022, 23:24
|
|
Новичок
Регистрация: 05.08.2018
Сообщений: 0
С нами:
4091032
Репутация:
0
|
|
У нас есть хороший курс по Python, приходите, научим )
Поправил код:
Python:
Код:
import
requests
from
bs4
import
BeautifulSoup
def
get_page_data
(
html
)
:
soup
=
BeautifulSoup
(
html
.
text
,
'html.parser'
)
tables
=
soup
.
find_all
(
'table'
)
a_tags
=
tables
[
4
]
.
find_all
(
'a'
)
sites_list
=
open
(
"bug-bounty-sites.txt"
,
"w"
)
for
a
in
a_tags
:
sites_list
.
write
(
a
.
get
(
'href'
)
+
'\n'
)
if
__name__
==
'__main__'
:
url
=
'https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php'
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'
}
page
=
requests
.
get
(
url
,
headers
=
headers
)
get_page_data
(
page
)
|
|
|

13.12.2022, 04:57
|
|
Познающий
Регистрация: 13.06.2022
Сообщений: 59
С нами:
2063496
Репутация:
0
|
|
explorer сказал(а):
Это не проблема с индексом, а проблема в незнании пайтона ) Скорее всего сайт определяет что запрос делает программа и отдаёт ошибку 403 - Forbidden: Access is denied.
Не нужно тупо копировать из книжки скрипты, так как парсер настраивается под каждый сайт индивидуально.
P.S. Проверил, так и есть - 403. Лечится легко, нужно добавить в код юзерагента.
Так вот оно как, почему мне это в голову не пришло. Проблема в том что автор не указал об этом по поводу юзерагента и он меня не пускал. Может быть я действительно слаб по питону. Спасибо большое!
|
|
|

13.12.2022, 04:59
|
|
Познающий
Регистрация: 13.06.2022
Сообщений: 59
С нами:
2063496
Репутация:
0
|
|
explorer сказал(а):
У нас есть хороший курс по Python, приходите, научим )
Поправил код:
Python:
Код:
import
requests
from
bs4
import
BeautifulSoup
def
get_page_data
(
html
)
:
soup
=
BeautifulSoup
(
html
.
text
,
'html.parser'
)
tables
=
soup
.
find_all
(
'table'
)
a_tags
=
tables
[
4
]
.
find_all
(
'a'
)
sites_list
=
open
(
"bug-bounty-sites.txt"
,
"w"
)
for
a
in
a_tags
:
sites_list
.
write
(
a
.
get
(
'href'
)
+
'\n'
)
if
__name__
==
'__main__'
:
url
=
'https://www.vulnerability-lab.com/list-of-bug-bounty-programs.php'
headers
=
{
'User-Agent'
:
'Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36'
}
page
=
requests
.
get
(
url
,
headers
=
headers
)
get_page_data
(
page
)
Спасибо большое!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|