Написание простого веб-скребка с использованием программирования Bash Перевод

В сфере парсинга веб-страниц Python часто оказывается в центре внимания благодаря надежным библиотекам, таким как BeautifulSoup и Scrapy. Но знаете ли вы, что парсинг веб-страниц также можно выполнить с помощью сценариев Bash?
В этом сообщении блога мы углубимся в сценарий Bash
, который извлекает ссылки и заголовки с веб-страницы и сохраняет их в файле CSV.
Проведя большую часть рабочего дня за терминалом, я хорошо познакомился с написанием сценариев автоматизации Bash. Однако, чтобы добавить творческий подход, я рискнул окунуться в мир парсинга веб-страниц с помощью Bash. Хотя Bash преуспевает в написании сценариев, я обнаружил его скрытые таланты в парсинге веб-страниц, которыми я рад поделиться в этом сообщении в блоге.
#!/bin/bash
# Define the URL to scrape
base_url="https://lite.cnn.com"
url="https://lite.cnn.com/"
# Create a CSV file and add a header
echo "Link,Title" > cnn_links.csv
# Extract links and titles and save them to the CSV file
link_array=($(curl -s "$url" | awk -F 'href="' '/<a/{gsub(/".*/, "", $2); print $2}'))
for link in "${link_array[@]}"; do full_link="${base_url}${link}"
title=$(curl -s "$full_link" | grep -o '<title[^>]*>[^<]*</title>' | sed -e 's/<title>//g' -e 's/<\/title>//g')
echo "\"$full_link\",\"$title\"" >> cnn_links.csv
done echo "Scraping and CSV creation complete. Links and titles saved to 'cnn_links.csv'."
Как это работает?
Этот сценарий Bash выполняет следующее:
-
Он определяет базовый URL-адрес и URL-адрес веб-страницы, которую вы хотите парсить.
-
Он создает файл CSV
cnn_links.csv
с именем и строкой заголовка, содержащей столбцы «Ссылка» и «Название». -
Используя
curl
, он извлекает HTML-содержимое указанной веб-страницы и извлекает все ссылки, найденные в тегах привязки,(<a>)
используяawk
. -
Затем он перебирает массив ссылок и извлекает заголовки страниц, выполняя дополнительные
curl
запросы к каждой ссылке. -
Наконец, он добавляет извлеченные ссылки и заголовки в файл CSV в нужном формате.
…
Итак, вот простой веб-скребок, написанный на bash
и использующий такие инструменты командной строки awk
, как sed
, grep
и curl
. Поскольку bash
доступен в большинстве систем Linux, он может быть полезен для получение данных с веб-страниц без необходимости установки какого-либо дополнительного программного обеспечения.
Читать полностью: https://muhammadraza.me/2023/webscraping-in-bash/