Урок 18. Сбор всех ссылок со страницы и сохранение в CSV и HTML

В автоматизации и парсинге часто возникает задача собрать все ссылки со страницы. Это полезно для анализа структуры сайта, тестирования и подготовки данных для дальнейшей обработки. В этом уроке мы рассмотрим, как собрать все ссылки и сохранить их в CSV и HTML.

Импорт и подготовка

Подключаем необходимые модули и запускаем браузер:

from selenium import webdriver
from selenium.webdriver.common.by import By
import csv
import time

# Настройка браузера
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://parsertools.ru")
time.sleep(2)  # Пауза для полной загрузки страницы

Сбор всех ссылок

Собираем все теги <a> и извлекаем URL и текст ссылки:

links = driver.find_elements(By.TAG_NAME, "a")
data = []

for link in links:
    href = link.get_attribute("href")
    text = link.text.strip()
    if href:  # Проверяем, что href существует
        data.append([text, href])

print(f"Найдено ссылок: {len(data)}")

Сохранение в CSV

Сохраняем собранные ссылки в файл links.csv для дальнейшей работы:

with open("links.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["Текст ссылки", "URL"])
    writer.writerows(data)

print("✅ Ссылки сохранены в links.csv")

Сохранение в HTML с оформлением

Создадим красивую таблицу HTML для визуального представления ссылок:


# Сохранение ссылок в HTML-файл с оформлением
html_file = "links.html"
with open(html_file, "w", encoding="utf-8") as f:
    # Запись HTML-заголовка и стилей
    f.write('''<html>
<head>
    <meta charset="UTF-8">
    <title>Ссылки со страницы ParserTools</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background-color: #f7f7f7; }
        h2 { color: #333; }
        table { border-collapse: collapse; width: 100%; background-color: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
        th, td { border: 1px solid #ddd; padding: 10px; text-align: left; font-size: 14px; }
        th { background-color: #4CAF50; color: white; }
        tr:nth-child(even) { background-color: #f2f2f2; }
        tr:hover { background-color: #e0f7fa; }
        a { color: #2196F3; text-decoration: none; }
        a:hover { text-decoration: underline; }
        td.number { width: 50px; font-weight: bold; }
    </style>
</head>
<body>
    <h2>Все ссылки со страницы ParserTools</h2>
    <table>
        <tr>
            <th>#</th>
            <th>Текст ссылки</th>
            <th>URL</th>
        </tr>
''')
    # Добавление данных в таблицу
    for idx, row in enumerate(data, start=1):
        f.write(f"<tr>")
        f.write(f"<td class='number'>{idx}</td>")
        f.write(f"<td>{row[0]}</td>")
        f.write(f"<td><a href='{row[1]}' target='_blank'>{row[1]}</a></td>")
        f.write(f"</tr>")
    # Завершение HTML
    f.write("</table></body></html>")

# Вывод сообщения об успешном сохранении
print(f"✅ Ссылки сохранены: {html_file}")
  

Советы

  • Используйте явные ожидания, если страница динамически подгружает ссылки.
  • Проверяйте наличие атрибута href, чтобы не включать пустые ссылки.
  • HTML-таблица помогает быстро визуально оценить собранные данные.

Этот урок полезен для начинающих и опытных пользователей, которые хотят быстро собирать ссылки со страниц для анализа, тестирования или подготовки парсинга.

Больше уроков по парсингу на parsertools.ru/lessons.