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

3
我正在使用Delphi 10.3创建一个VCL应用程序,希望通过让用户在TEdit组件中输入书籍的ISBN并将该值传递/发送到此网站的搜索字段https://isbnsearch.org来支持一些Web功能,然后网站查找ISBN并显示书籍的作者。我想以某种方式访问搜索结果呈现的信息(即作者)并再次在我的应用程序中使用它。这是我的GUI,以更好地了解我想要实现的内容:

enter image description here

我该使用什么代码?如果有其他可行的建议或方法也可以接受。


另一种方法是切换到另一个提供者,例如 https://openlibrary.org/dev/docs/api/books,并使用简单的REST请求获取JSON值作为答案。 - fisi-pjm
1个回答

6
当在该网站上执行搜索时,它只是加载带有特定URL查询字符串的页面...
https://isbnsearch.org/search?s=suess

上面的示例是当我搜索"suess"时,所以你可以轻松地拼接一个搜索URL。
你可以使用任何HTTP组件,比如TIdHTTP,来加载这个搜索页面,然后使用HTML解析器来抓取页面并读取所需内容。这比尝试通过TWebBrowser阅读要容易得多。

enter image description here

最终,您实际上不会显示HTML(如果您愿意可以显示),但是想法是读取数据并以自己的格式显示它。
在该特定页面上,首先找到具有id“searchresults”的
    元素。然后,每个
  • 元素包含单个结果。不幸的是,此网站使用分页,并且每页仅显示10个结果。为此,请再次调用此页面,使用另一个参数&p=2获取第2页,&p=3获取第3页,依此类推。
    另一方面,那是获取此类信息的最糟糕的方式。您应该使用适当的API来提供机器友好的数据。您引用的服务似乎没有此选项,但以下是一个具有此选项的示例:https://openlibrary.org/dev/docs/api/books - 这似乎还提供了比您使用的更多的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接