Grep, awk не работает с файлом HTML curl (получение ссылки от html) - PullRequest
0 голосов
/ 11 июля 2020

Я уже прочитал много страниц здесь, о stackoverflow, но в моем szenario ничего не работает.

Я хочу получить последние совпадающие (или все) URL-адреса, содержащие «cedock», с этого веб-сайта: «https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil -97613600-1 "

Когда я сохраняю файл, а затем выполняю поиск в редакторе файлов, он работает нормально, но ни одна из этих команд не помогала мне получить URL-адреса или отфильтровать что-либо в этом файле. :

curl -k -s "https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1" | awk -F'SRC="|"' '/SRC/ && /'"cedock"'/  {print $4}'

curl -k -s "https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1" | grep -o 'FOTA-OTA/V8-R851T02-LF1V342.014883.zip.*zip</a><br /></div></div><br'

grep "<a href=" 4pda.txt |sed "s/<a href/\\n<a href/g" |sed 's/\"/\"><\/a>\n/2' |grep href |sort |uniq

Что-то сломалось с самим сайтом? Поскольку я использую аналогичные команды на других веб-сайтах, и они там работают.

Желаемый результат - это последний URL-адрес загрузки из cedock, например, прямо сейчас: http://na-update.cedock.com/apps/resource2/V8R851T02/V8-R851T02-LF1V351/FOTA-OTA/V8-R851T02-LF1V351.015103.zip

1 Ответ

1 голос
/ 11 июля 2020

С xmlstarlet:

curl -k -s 'https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1' \
  | xmlstarlet format --html 2>/dev/null \
  | xmlstarlet select --template --value-of '//html/body/div/div[10]/div[2]/div[1]/div[2]/a[last()]/@href' -n

Вывод:

http://na-update.cedock.com/apps/resource2/V8R851T02/V8-R851T02-LF1V351/FOTA-OTA/V8-R851T02-LF1V351.015103.zip

Я использовал xmlstarlet format --html, чтобы сохранить исправимые части из сломанных HTML.

Обновление

Чтобы получить последний URL с доменом na-update.cedock.com:

curl -k -s 'https://4pda.ru/forum/index.php?showtopic=973246&st=4040#Spoil-97613600-1' \
  | xmlstarlet format --html 2>/dev/null \
  | xmlstarlet select --template --value-of '//a[last()]/@href[.=contains(.,"http://na-update.cedock.com")]' -n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...