LUA.socket,HEADER:这两个词语需要更多上下文才能进行准确的翻译,请提供更多信息。

我已经浏览 stackoverflow 多年以寻找问题的答案,这是我第一次自己提出问题。希望我的问题不会太模糊。

我现在遇到的麻烦是,不明白为什么我的 LUA 代码不能正常工作。我想做的只是请求连接并从网站下载 html 文件。以下是代码:

local http = require("socket.http")
local ltn12 = require("ltn12")

local response = {}
local body,code,headers,status = http.request({
    method = "GET",
    url = "http://jisho.org/",
    headers = {
        jap = "",
        eng = "hello",
        dict = "edict"
        },
    sink = ltn12.sink.table(response)
    })
print(table.concat(response))

这是一个简单的代码,应该进入字典网站“jisho.org”,发送标题,以便搜索英语单词“hello”,并打印新页面的 html。现在我只得到“jisho.org”的 html,而不是已搜索“hello”的网站的 html。

我想知道我做错了什么?

点赞
用户1442917
用户1442917

通过查看网站,你需要使用不同的URL并且在URL本身中包含查询参数(正如Etan Reisner建议的那样);以下代码对我而言有效:

local http = require("socket.http")
local ltn12 = require("ltn12")
local response = {}
local body,code,headers,status = http.request({
    method = "GET",
    url = "http://jisho.org/words?jap=&eng=hello&dict=edict",
    sink = ltn12.sink.table(response),
    })
print(table.concat(response))

我得到了包含“发现的单词”部分的HTML:

<!-- Found words -->
<div id="result">
    <div id="result_content">
...some HTML skipped...
            <td class="meanings_column">ahoy; hullo; hello          </td>

然后你可以解析返回的HTML来提取你需要的任何值。

2014-10-01 17:43:07