编辑我现在意识到API根本不够用,甚至无法工作。 我想重定向我的问题,我想能够自动神奇地搜索duckduckgo使用他们的“我感觉ducky”。这样我就可以搜索stackoverflow并得到主页(https://stackoverflow.com/)作为结果。
我正在使用DuckDuckGoAPI。Here
我发现在使用时:
r = duckduckgo.query("example")
结果并不反映手动搜索,即:
for result in r.results:
print result
结果:
>>>
>>>
什么都没有。
在results
中查找索引会导致超出界限的错误,因为它是空的。
我应该如何得到搜索结果?
似乎API(根据其文档中的示例)应该回答问题,并以r.answer.text
的形式给出一种“我感觉很浮躁”
但网站的制作方式让我无法用普通方法搜索和解析结果。
我想知道我应该如何用这个API或者这个站点的任何其他方法解析搜索结果。
谢谢你。
在我已经得到了我的问题的答案,我接受并悬赏-我找到了一个不同的解决方案,我想在这里补充完整性。非常感谢所有帮助我达成这个解决方案的人。尽管这不是我所要求的解决方案,但它可能在未来对某人有所帮助。
在与此网站进行了长时间的艰苦对话并收到了一些支持邮件后发现:https://duck.co/topic/strange-problem-when-searching-intel-with-my-script
下面是解决方案代码(来自上面帖子中的答案):
尝试:
如果您访问DuckDuck Go API Page,您将发现一些关于使用API的注释。第一个音符清楚地表明:
a以下是这些字段的列表:
所以这可能是一个遗憾,但是他们的API只是截短了一堆结果,并没有把它们给您;可能是为了更快地工作,似乎除了使用DuckDuckGo.com之外什么也做不了。
因此,显然,在这种情况下,API不是解决问题的方法。
至于我,我只看到了一条出路:从duckduckgo.com检索原始html并使用html5lib等解析它(值得一提的是,它们的html结构良好)。
值得一提的是,解析html页面并不是丢弃数据的最可靠的方法,因为html结构可以更改,而API通常保持稳定,直到公开宣布更改。
下面是如何使用BeautifulSoup实现这种解析的示例:
此脚本打印:
在主页面上直接查询的问题是,它使用JavaScript生成所需的结果(与主题无关),因此您只能使用HTML版本来获取结果。HTML版本有不同的链接:
让我们看看我们能得到什么:
存储在
first_link
变量中的结果是指向搜索引擎输出的第一个结果的链接(不是相关搜索):要获得所有链接,您可以在找到的标记上迭代(除了链接之外的其他数据可以以类似的方式接收)
注意,仅HTML版本只包含结果,对于相关搜索,必须使用JavaScript版本。(在url中没有
html
部分)。相关问题 更多 >
编程相关推荐