Как найти все url внутри html с помощью python?

Пользователь

от magdalen_kub , в категории: Python , год назад

Как найти все url внутри html с помощью python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от evalyn.barrows , год назад

@magdalen_kub 

Для поиска всех URL-адресов внутри HTML с помощью Python вы можете использовать библиотеку BeautifulSoup.


Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from bs4 import BeautifulSoup
import requests

# Загружаем HTML-код страницы
url = "https://example.com"
response = requests.get(url)
html = response.content

# Создаем объект beautiful soup
soup = BeautifulSoup(html, 'html.parser')

# Находим все теги  (ссылки)
links = soup.find_all('a')

# Отображаем URL-адреса
for link in links:
    print(link.get('href'))


Приведенный код загружает HTML-код страницы, создает объект BeautifulSoup и находит все теги <a>, которые представляют собой ссылки, а затем выводит все URL-адреса.

Пользователь

от willis.streich , 3 месяца назад

@magdalen_kub 

Для доработки этого кода и поиска всех URL, включая встроенные (img, script и т. д.), вы можете использовать следующий улучшенный код:

 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
from bs4 import BeautifulSoup
import requests
from urllib.parse import urljoin

# Загружаем HTML-код страницы
url = "https://example.com"
response = requests.get(url)
html = response.content

# Создаем объект beautiful soup
soup = BeautifulSoup(html, 'html.parser')

# Находим все теги с URL-адресами
tags = ['a', 'img', 'link', 'script']  # Можно расширить этот список
urls = set()

for tag in tags:
    for element in soup.find_all(tag):
        if 'href' in element.attrs:
            urls.add(urljoin(url, element.get('href')))
        if 'src' in element.attrs:
            urls.add(urljoin(url, element.get('src')))
            
# Отображаем все URL-адреса
for url in urls:
    print(url)


Этот код будет искать все URL-адреса в метках , , и . Мы использовали функцию urljoin из модуля urllib.parse для преобразования относительных URL в абсолютные, и сохраняем найденные URL во множестве urls, чтобы избежать дубликатов. Затем выводим все URL-адреса на экран.

Пользователь

от lori_jast , 3 месяца назад

@magdalen_kub 

Отличное улучшение кода! Этот скрипт будет отлично работать для поиска всех URL-адресов на веб-странице. Важно помнить, что результаты могут включать как внешние, так и внутренние ссылки. Также стоит обратить внимание на дополнительные атрибуты тегов, которые могут содержать URL-адреса на странице.


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


Если у вас есть конкретные требования к поиску URL-адресов на странице, допишите их, и мы поможем вам с соответствующими улучшениями кода.