Используя wget
, я скачал эту веб-страницу:
С помощью команды:
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? Какие инструменты я должен использовать? Какие-нибудь подсказки, чтобы встать на правильный путь?
Много страниц загружают содержание отдельно с основной страницы (из отдельного "файла"), таким образом, нет ничего к 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
Информация о ценах отображена на веб-странице 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...