Не могу найти цену в загруженной веб-странице

Используя wget, я скачал эту веб-страницу:

Walmart Website.png

С помощью команды:

RobWebsiteAddress="https://www.walmart.ca/en/ip/Dispenser-Set-Tumbler-Organizer-Bathroom-Bin-Holder-Bathroom-Containers-Soap-Set-Accessories-Travel-6Pcs-Accessory-Ejoyous-Dish-Toothbrush/PRD4406MV3EZF75"
DownloadName="Ejoyous1"
wget -O- -q --user-agent=AGENT "$RobWebAddress" > "$DownloadName"

Когда Я пытаюсь открыть файл в gedit, он сходит с ума.

Когда я использую:

grep -i 23.31 Ejoyous1 | wc
      0       0       0

Цена не найдена. Если я grep произнесу слово price, то вернусь одна длинная строка из 146 329 символов, что, вероятно, привело в бешенство gedit:

$ grep -i price Ejoyous1 | wc
      1    6292  146329

В файле .5 МБ есть несколько подсказок:

$ grep -i necolas Ejoyous1
/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */

Как вы можете сказать, это с сайта Walmart. У меня нет проблем с получением цены Costco и цены Ikea, просто скачав веб-страницу с wget и щелкнув по ней. У меня также нет проблем с просмотром загруженных файлов из Costco или Ikea с gedit.

Как я могу интерпретировать этот язык, если он является производным от HTML? Какие инструменты я должен использовать? Какие-нибудь подсказки, чтобы встать на правильный путь?

0
задан 24 August 2019 в 06:48

2 ответа

Много страниц загружают содержание отдельно с основной страницы (из отдельного "файла"), таким образом, нет ничего к grep в файле, который Вы загружаете wget.  Firefox запускает JavaScript, который позволяет этому загружать содержание.   можно нажать (Ctrl+Shift+C) для наблюдения консоли JavaScript.   Нажмите "Network", затем перезагружают страницу для наблюдения, какие связи это устанавливает.   Одно из соединений json "файл", названный ценовым предложением.

возможно достигнуть данные, если Вы можете выяснить, где содержание расположено.   Иначе, необходимо было бы выполнить JavaScript, как Firefox делает.   Однако это не столь просто как просто обеспечение URL   также необходимо отправить данные на сервер для получения информации, которую Вы хотите.   (API cmak.fr описывает .)

я нашел, что мог открыть веб-страницу с Firefox, который имеет "Сохранить Как" .html опция. Получающиеся сохранили файл, мог затем быть захвачен за цену.

Это работает, потому что браузер добавляет дополнительную информацию (от json) к странице прежде сохранение его.   Для пропуска вручную нажатия вокруг GUI можно загрузить страницу Хромом.   (Firefox может использоваться также, но смотрит более сложный †“ Бездисплейный Режим MDN .)

chromium-browser --headless --disable-gpu --dump-dom "https://example.com/" > example.html

Затем grep за цену:

sed -i.bak -Ee 's@,@,\n@g' example.html 
grep -wEe '"price"\:[0-9]+\.[0-9]+' example.html 
2
ответ дан 23 October 2019 в 05:09

Информация о ценах отображена на веб-странице js сценарием с помощью API и json
Именно поэтому, ценовой текст не присутствует в исходном коде веб-страницы
, сеть браузера А dev инструменты покажет, что цена - и больше информации как запас - поступают из json ответа https://www.walmart.ca/api/product-page/price-offer

Начиная с подобных, процесс может быть защищен аутентификацией и cookie и с тех пор wget, и завихрение не может загрузить json файл, идея будет состоять в том, чтобы зарегистрировать и использовать Wallmart API
https://developer.walmart.com /
, Но кажется, что API для поставщиков партнеров

, Другая идея состояла бы в том, чтобы инвертировать общедоступный процесс сборки Веб-страницы для отправки хорошо сформированного запроса API...

2
ответ дан 23 October 2019 в 05:09

Другие вопросы по тегам:

Похожие вопросы: