Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
18 / 18 / 2
Регистрация: 22.09.2015
Сообщений: 22

Requests + bs4, провал постраничного обхода

23.10.2016, 17:13. Показов 2108. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Есть сайт:
https://www.gabar.org/membersearchresults.cfm
Который дает взять спарсить свою первую страницу поиска, но не пускает на прочие. Есть ли возможность получить данные и как нужно думать чтобы отыскать такую возможность?


Код парсинга/скрапинга:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from bs4 import BeautifulSoup
import requests
import traceback
 
 
links_to_visit = []
navigation_links = []  # for testing next button
 
base_url = 'https://www.gabar.org'
 
 
def make_soup(link):
    r = requests.get(link)
    soup = BeautifulSoup(r.content, 'html.parser')
    return soup
 
 
def all_results(url):
    global links_to_visit
    global navigation_links
    soup = make_soup(url)
    print(soup)
    div = soup.find('div', {'class': 'cs_control'})
    links = div.find_all('a')
    print(links)
    for link in links:
        try:
            if link.text == 'Next':  # prev, next, new search
                navigation_links.append(link)
                print('got it')
            elif not '/MemberSearchDetail.cfm?ID=' in link.get('href'):
                pass  # I dont need that link
            else:
                links_to_visit.append(link)
        except:
            traceback.print_exc()
    print(len(links_to_visit))
    print(links_to_visit)
    #print(links_to_visit[-1].get('href'))
 
 
def start():
    flag = 1
    page = 1
    while page < 60716:
        flag = 0
        if navigation_links[-1].text == 'Next':
            flag = 1
            next_link = navigation_links[-1]
            #print(next_link.get('href'))
        page += 25
        print(base_url + next_link.get('href'))
        all_results(base_url + next_link.get('href'))
        print('page is:', page)
 
if __name__ == '__main__':
    all_results('https://www.gabar.org/membersearchresults.cfm')
    start()
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2016, 17:13
Ответы с готовыми решениями:

Requests и bs4 python 3
Всем привет, начала недавно изучать питон и решил поработать с запросами, такой вопрос возник - использую requests для запроса и bs4 для...

Парсинг olx.ua Python+requests+bs4
Пытаясь сделать парсер мобильных телефонов на сайте olx.ua столкнулся с проблемой:при отправке ajax запроса мне выдает вместо корректного...

Парсинг на Python. BeautifulSoup, bs4, requests
Добрый день. Нужна помощь от людей, кто работал с BeautifulSoup на Python. Пытаюсь получить со страницы проверки QR кода на ГосУслугах дату...

2
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
23.10.2016, 20:14
Wohilas, Запустил код, не вижу проблемы. У меня догрузил до 201 страницы и дальше грузил.
1
18 / 18 / 2
Регистрация: 22.09.2015
Сообщений: 22
24.10.2016, 10:00  [ТС]
Там он парсил первую страницу, а затем натыкался на что-то вроде "поисковый запрос оформлен не верно". Просто из-за стилистики кода это не заметно.

Впрочем вопрос был решен.
Если кто-то наткнется, то:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from bs4 import BeautifulSoup
import requests
import traceback
user_agent = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 YaBrowser/16.9.1.1192 Yowser/2.5 Safari/537.36'}
 
headers = {'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Fiddler', 'Host': 'www.gabar.org'}
payload = {'firstName=': '', 'MiddleName=': '', 'LastName=': '', 'Section=': '', 'Company=': '', 'LawSchool=': '',
           'City=': '', 'State=': '', 'Zip=': ''}
 
links_to_visit = set()
navigation_links = []  # for testing next button
 
base_url = 'https://www.gabar.org'
 
#our_r = requests.post('https://www.gabar.org/membersearchresults.cfm', headers=headers, params=payload)
#print(our_r.content)
 
link = 'https://www.gabar.org/membersearchresults.cfm'
s = requests.Session()
def make_soup(link):
    r = s.get(link, headers=headers, cookies={'from-my': 'browser'})
    #our_r = requests.post(link, headers=headers, params=payload)
    soup = BeautifulSoup(r.content, 'html.parser')
    #print(soup)
    print(s.cookies.get_dict())
    return soup
 
 
def all_results(url):
    global links_to_visit
    global navigation_links
    soup = make_soup(url)
    #print(soup)
    div = soup.find('div', {'class': 'cs_control'})
    links = div.find_all('a')
    #print(links)
    for link in links:
        try:
            if link.text == 'Next':  # prev, next, new search
                navigation_links.append(link)
                print('got it')
            elif not '/MemberSearchDetail.cfm?ID=' in link.get('href'):
                pass  # I dont need that link
            else:
                links_to_visit.add(link)
        except:
            traceback.print_exc()
    print(len(links_to_visit))
    print(links_to_visit)
    #print(links_to_visit[-1].get('href'))
 
 
def start():
    flag = 1
    page = 1
    while page < 60716:
        flag = 0
        if navigation_links[-1].text == 'Next':
            flag = 1
            next_link = navigation_links[-1]
            #print(next_link.get('href'))
        page += 25
        print(base_url + next_link.get('href'))
        all_results(base_url + next_link.get('href'))
        print('page is:', page)
 
if __name__ == '__main__':
    all_results(link)
    start()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2016, 10:00
Помогаю со студенческими работами здесь

не получается импортировать скачанные пакеты (bs4,requests и т.д.)
Добрый день. Пользуясь уроками из инета - скачал через pip в cmd различные пакеты - bs4, requests и т.д. , но проблема в том что не...

requests + bs4
Как получить все игры команд с этого турнира (Дату, время и команды)? import requests from bs4 import BeautifulSoup as BS link...

Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым
Добавил модуль requests в Visual Studio, но import requests подсвечен зеленым. Как исправить?

Использование по import requests. ImportError: No module named requests
Приветствую, начну с того, что я самый новый новичек и код который написан ниже это 1й скрипт после helloworld. Итак. Я нашел на...

Requests requests.exceptions.ProxyError
Ошибка: requests.exceptions.ProxyError: HTTPSConnectionPool(host='uchim.org', port=443): Max retries exceeded with url:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru