【问题标题】:Send and receive data to and from a website using the TWebbrowser component in Delphi使用 Delphi 中的 TWebbrowser 组件向网站发送和接收数据
【发布时间】:2019-05-08 17:55:15
【问题描述】:
我正在使用 Delpi 10.3 创建一个 VCL 应用程序,并希望通过让用户将一本书的 ISBN 输入到 TEdit 组件中并从那里将此值传递/发送到此网站上的搜索字段来支持某些 Web 功能: https://isbnsearch.org 之后网站查找 ISBN 并显示该书的作者。我想以某种方式访问搜索结果提供的信息(即作者)并再次在我的应用程序中使用它。
这是我的 GUI,以便更好地了解我想要完成的工作:
我可以为此使用什么代码?任何其他可行的建议或方法都是可以接受的。
【问题讨论】:
标签:
html
delphi
web
twebbrowser
【解决方案1】:
在该网站上执行搜索时,它只是加载具有特定 URL 查询字符串的页面...
https://isbnsearch.org/search?s=suess
上面的例子是我搜索“suess”的时候,所以你可以很容易地连接一个搜索URL。
您可以使用任何 HTTP 组件(例如 TIdHTTP)来加载此搜索页面,然后使用 HTML 解析器抓取页面并阅读您需要的内容。比阅读TWebBrowser 容易得多。
最后,您实际上不会显示 HTML(我的意思是,如果您愿意,您可以),但想法是读取数据并以您自己的格式显示。
在该特定页面上,首先找到 ID 为 searchresults 的 ul 元素。然后,每个li 元素都包含单独的结果。不幸的是,这个网站使用分页,每页只显示 10 个结果。为此,请再次调用此页面,并使用另一个参数 &p=2 用于第二页,&p=3 用于第三页,依此类推。
另一方面,这是获取此类信息的最糟糕的方式。您应该做的是使用适当的 API 来为您提供机器友好的数据。您引用的服务似乎没有选项,但这里有一个示例:
https://openlibrary.org/dev/docs/api/books - 这似乎也为您提供更多比您正在使用的信息。