【问题标题】: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 为 searchresultsul 元素。然后,每个li 元素都包含单独的结果。不幸的是,这个网站使用分页,每页只显示 10 个结果。为此,请再次调用此页面,并使用另一个参数 &p=2 用于第二页,&p=3 用于第三页,依此类推。


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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多