Отправка и получение данных на веб-сайт и с него с помощью компонента TWebbrowser в Delphi - PullRequest
3 голосов
/ 08 мая 2019

Я создаю VCL-приложение с Delpi 10.3 и хочу поддерживать некоторые веб-функции, позволяя пользователю вводить ISBN книги в компонент TEdit и оттуда передавать / отправлять это значение в поле поиска на этом веб-сайте: https://isbnsearch.org, после чего веб-сайт ищет ISBN и отображает автора книги. Я хочу как-то получить доступ к информации (т.е. автору), представленной в результате поиска, и снова использовать ее в своем приложении.

Это мой графический интерфейс, для лучшего понимания того, чего я хочу достичь:

enter image description here

Какой код я могу использовать для этого? Любые другие возможные предложения или подходы являются приемлемыми.

1 Ответ

5 голосов
/ 08 мая 2019

При выполнении поиска на этом веб-сайте он просто загружает страницу с определенной строкой URL-запроса ...

https://isbnsearch.org/search?s=suess

В приведенном выше примере, когда я ищу "suess", вы можете легко объединить поисковый URL.

Вы можете использовать любой компонент HTTP, например, TIdHTTP, чтобы загрузить эту страницу поиска, а затем использовать анализатор HTML, чтобы очистить страницу и прочитать то, что вам нужно. Гораздо проще, чем пытаться прочитать TWebBrowser.

enter image description here

В конце концов, вы на самом деле не будете отображать HTML (я имею в виду, что можете, если хотите), но идея заключается в том, чтобы прочитать данные и отобразить их в своем собственном формате.

На этой конкретной странице начните с поиска элемента ul с идентификатором searchresults. Затем каждый элемент li содержит индивидуальные результаты. К сожалению, этот сайт использует нумерацию страниц и показывает только 10 результатов на страницу. Для этого снова вызовите эту страницу с другим параметром &p=2 для 2-й страницы, &p=3 для 3-й страницы и т. Д.


С другой стороны, это худший способ получения такой информации. То, что вы должны делать, это использовать правильный API, который предоставляет вам удобные для машин данные. Служба, на которую вы ссылаетесь, похоже, не имеет опции, но вот пример такой, которая делает:

https://openlibrary.org/dev/docs/api/books - эта информация также предоставляет вам НАМНОГО больше информации, чем та, которую вы используете.

...