我正在用Delpi 10.3创建VCL应用程序,并希望通过让用户在TEdit组件中输入书籍的ISBN,然后将该值传递/发送到该网站上的搜索字段来支持某些Web功能: https://isbnsearch.org之后,网站将查询ISBN并显示该书的作者。我想以某种方式访问搜索结果显示的信息(即作者),然后在我的应用程序中再次使用它。
这是我的GUI,可以更好地了解我要完成的工作:
我可以为此使用什么代码?任何其他可行的建议或方法都是可以接受的。
答案 0 :(得分:5)
在该网站上执行搜索时,它只会加载带有特定URL查询字符串的页面...
https://isbnsearch.org/search?s=suess
上面的示例是当我搜索“ suess”时,因此您可以轻松地连接搜索URL。
您可以使用任何HTTP组件(例如TIdHTTP
)加载此搜索页面,然后使用HTML解析器抓取该页面并阅读所需内容。比尝试通读TWebBrowser
容易得多。
最后,您实际上不会显示HTML(如果您愿意的话,您可以显示HTML),但是其想法是读取数据并以您自己的格式显示。
在该特定页面上,首先找到ID为ul
的{{1}}元素。然后,每个searchresults
元素都包含单独的结果。不幸的是,该网站使用分页,每页仅显示10条结果。为此,请使用另一个参数li
表示第二页,&p=2
表示第三页,依此类推。
另一方面,这是获取此类信息的最差方法。您应该做的是使用适当的API,该API为您提供机器友好的数据。您所引用的服务似乎没有选项,但是下面是其中一个示例:
https://openlibrary.org/dev/docs/api/books-与您正在使用的信息相比,这似乎还为您提供更多信息。