使用 Delphi 中的 TWebbrowser 组件向网站发送数据和从网站接收数据

Send and receive data to and from a website using the TWebbrowser component in Delphi

我正在使用 Delpi 10.3 创建一个 VCL 应用程序,并希望通过让用户在 TEdit 组件中输入一本书的 ISBN 并从那里 passing/sending 这个值到搜索字段来支持一些网络功能在此网站上:https://isbnsearch.org 之后网站会查找 ISBN 并显示图书的作者。我想以某种方式访问​​搜索结果显示的信息(即作者),并再次在我的应用程序中使用它。

这是我的 GUI,为了更好地了解我想要完成的事情:

我可以为此使用什么代码?任何其他可行的建议或方法都是可以接受的。

在该网站上执行搜索时,它只是加载具有特定 URL 查询字符串的页面...

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

上面的例子是我搜索"suess"的时候,所以你可以很方便的拼接一个搜索URL.

您可以使用任何 HTTP 组件(例如 TIdHTTP)加载此搜索页面,然后使用 HTML 解析器抓取页面并读取您需要的内容。比通读 TWebBrowser.

容易得多

最后,您实际上不会显示 HTML(我的意思是如果您愿意,您可以),但想法是读取数据并以您自己的格式显示。

在该特定页面上,首先找到 ID 为 searchresultsul 元素。然后,每个 li 元素包含单独的结果。不幸的是,这个网站使用分页,每页只显示 10 个结果。为此,再次调用此页面并使用另一个参数 &p=2 表示第二页,&p=3 表示第三页,依此类推。


另一方面,这是获取此类信息的最糟糕的方式。您应该做的是使用适当的 API 为您提供 machine-friendly 数据。您引用的服务似乎没有选项,但这里有一个示例:

https://openlibrary.org/dev/docs/api/books - 这似乎也为您提供了 MUCH 比您正在使用的信息更多的信息。