Урок 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.
