Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/84: Рейтинг темы: голосов - 84, средняя оценка - 4.68
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16

Как получить все ссылки с сайта?

01.02.2019, 19:08. Показов 17216. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть задача - получить все ссылки со всех страниц сайта

но у меня почему-то не получается это сделать

он выводит какие-то ссылки, но... как-то не правильно. Ссылок около 800 должно быть, а получается всего 140

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
import requests
from bs4 import BeautifulSoup
from collections import OrderedDict
import time
 
ignore = ['@', 'mail']
 
url = 'https://dezzakaz.com/'
r = requests.get(url)
 
soup = BeautifulSoup(r.text, 'lxml')
 
#Получаем список ссылок с главной страницы
list_urls = []
for i in soup.findAll('a'):
    link = str(i.get('href'))
    list_urls.append(link)
 
time.sleep(10)
 
#Получаем общий список всех ссылок с сайта (не уникальный)
all_urls_ = []
click = 1
for page in list(OrderedDict.fromkeys(list_urls).keys()):
    print(len(list(OrderedDict.fromkeys(list_urls).keys())))
    while click <= len(list(OrderedDict.fromkeys(list_urls).keys())):
        page = url + page
        request_url = requests.get(page)
        bsoup = BeautifulSoup(request_url.text, 'lxml')
        for l in bsoup.findAll('a'):
            lnk = str(l.get('href'))
            all_urls_.append(lnk)
        print(click)
        click += 1
        time.sleep(1)
    
print(len(all_urls_))

Подскажите пожалуйста, что не так я сделал?

Добавлено через 3 часа 49 минут
Решил так, вроде получилось

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
import requests
from bs4 import BeautifulSoup
from collections import OrderedDict
import time
 
ignore = ['@', 'mail']
 
url = 'https://dezzakaz.com/'
r = requests.get(url)
 
soup = BeautifulSoup(r.text, 'lxml')
 
#Получаем список ссылок с главной страницы
list_urls = []
for i in soup.findAll('a'):
    link = str(i.get('href'))
    list_urls.append(link)
 
uniq_list_links = list(OrderedDict.fromkeys(list_urls).keys())
links_of_pages = []
count = 1
for x in list_urls:
    get_x = requests.get(url + x)
    bsoup = BeautifulSoup(get_x.text, 'lxml')
    all_hrefs = bsoup.findAll('a')
    for link in all_hrefs:
        if link not in uniq_list_links:
            links_of_pages.append(url + str(link.get('href')))
            print(count)
            count += 1
        else:
            continue
        
print(len(links_of_pages))
print(list(OrderedDict.fromkeys(links_of_pages).keys()))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.02.2019, 19:08
Ответы с готовыми решениями:

Как получить все ссылки меню с сайта?
Как получить все ссылки меню с сайта,если они даже не указанны в меню?

Как получить все ссылки на страницы сайта, которые находятся в выдаче гугл?
Как получить все ссылки на страницы сайта, которые находятся в выдаче гугл? Нужно считывать все ссылки которыые находятся в выдаче у...

Получить все полные ссылки сайта
Написал код: static List&lt;string&gt; AngleSharp(String Html, string Prefix, string FindPrefix) { List&lt;string&gt;...

3
0 / 0 / 0
Регистрация: 31.10.2021
Сообщений: 2
01.11.2021, 13:34
IRIP, добрового времени суток. Надеюсь вы сможете помочь. У меня стоит такая же задача, как у вас, однако разница в том, что мне нужно получить все рабочие ссылки с сайта, которые оканчиваются на определенное значение. Буду благодарен!
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
01.11.2021, 13:37
1613Али, получай все ссылки, фильтруй только те, что заканчиваются на нужное тебе и проверяй с помощью гет запроса что они возвращают 200 (то есть живы). Не благодари.
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
12.11.2021, 00:55
Цитата Сообщение от 1613Али Посмотреть сообщение
мне нужно получить все рабочие ссылки с сайта, которые оканчиваются на определенное значение.
Code
1
2
[атрибут$="значение"]    
[src$=".png"]   Выбирает все элементы с атрибутом src, значение которого оканчивается на ".png" (src="some_img.png").
Изучай CSS селекторы и будет тебе счастье.
Для использования нужно применить cssselect из lxml.html, либо метод select из BS4.
Да, BS4, можно вообще не использовать, тем более, если в качестве бэкенда идет lxml. Тогда уж лучше сразу lxml.
Python
1
2
3
4
root = lxml.html.fromstring(html)
anchors = root.cssselect('a[href$=".png"]')
for a in anchors:
    print(a.get("href"))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2021, 00:55
Помогаю со студенческими работами здесь

Получить все ссылки и заголовки с сайта
Здравствуйте, есть задание: На вход программа получает адрес веб-сайта. Необходимо вытащить все ссылки и заголовок для каждой ссылки,...

Получить все ссылки со страницы сайта
Здравствуйте ув. форумчане! Подскажите как получить все ссылки со страницы сайта (CppWebbrowser). Добавлено через 13 минут Нашел...

Получить все ответвления сайта (ссылки)
Доброй день дорогие пользователи :) Передо мной стоит задача получить все ответвления сайт(ссылки). Я пробовал извлечь из ответа,но...

Получить все внутренние ссылки с какого-либо сайта
Здравствуйте. Как можно получить все ссылки с какого-то сайта, которые ведет на этот же сайт. Нужно получить только те ссылки которые...

Как заменить все ссылки на текст кроме ссылки моего сайта?
Всем привет! Есть выражение и есть текст ссылками. Где ссылки заменяю на слова &quot;Ссылки запрещены!&quot;. Всё работает! Вот теперь...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru