栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

duckduckgo API未返回结果

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

duckduckgo API未返回结果

如果您访问DuckDuck Go
API页面
,则会发现有关使用API​​的一些注意事项。第一个注释清楚地表明:

由于这是一个零点击的Info API,因此大多数深层查询(非主题名称)将为空白。

这是这些字段的列表:

Abstract: ""AbstractText: ""AbstractSource: ""AbstractURL: ""Image: ""Heading: ""Answer: ""Redirect: ""AnswerType: ""Definition: ""DefinitionSource: ""DefinitionURL: ""RelatedTopics: [ ]Results: [ ]Type: ""

所以可能有些遗憾,但是他们的API只是截断了很多结果,而没有提供给您。可能会更快地工作,并且看起来除了使用DuckDuckGo.com之外什么都做不到。

因此,显然,在这种情况下,API并非可行之路。

对于我来说,我只剩下一种方法:从duckduckgo.com检索原始html并使用html5lib(例如,值得一提的是它们的html结构良好)进行解析。

还值得一提的是,解析html页面不是抓取数据的最可靠方法,因为html的结构可以更改,而API通常保持稳定直到公开宣布更改。

这是使用BeautifulSoup如何实现这种解析的示例:

from BeautifulSoup import BeautifulSoupimport urllibimport resite = urllib.urlopen('http://duckduckgo.com/?q=example')data = site.read()parsed = BeautifulSoup(data)topics = parsed.findAll('div', {'id': 'zero_click_topics'})[0]results = topics.findAll('div', {'class': re.compile('results_*')})print results[0].text

该脚本打印:

u'Eixample, an inner suburb of Barcelona with distinctive architecture'

在主页上直接查询的问题是它使用Javascript产生所需的结果(而不是相关主题),因此您可以使用HTML版本仅获得结果。HTML版本具有不同的链接:

  • http://duckduckgo.com/?q=example#Javascript 版本
  • http://duckduckgo.com/html/?q=example# 仅限HTML版本

让我们看看我们能得到什么:

site = urllib.urlopen('http://duckduckgo.com/html/?q=example')data = site.read()parsed = BeautifulSoup(data)first_link = parsed.findAll('div', {'class': re.compile('links_main*')})[0].a['href']

存储在

first_link
变量中的结果是指向搜索引擎输出的第一个 结果 (不是 相关搜索 )的链接:

http://www.iana.org/domains/example

要获取所有链接,您可以遍历找到的标签(可以以类似方式接收链接以外的其他数据)

for i in parsed.findAll('div', {'class': re.compile('links_main*')}):    print i.a['href']http://www.iana.org/domains/examplehttps://twitter.com/examplehttps://www.facebook.com/leadingbyexamplehttp://www.trythisforexample.com/http://www.myspace.com/leadingbyexample?_escaped_fragment_=https://www.youtube.com/watch?v=CLXt3yh2g0shttps://en.wikipedia.org/wiki/Example_(musician)http://www.merriam-webster.com/dictionary/example...

请注意,纯HTML版本仅包含 results ,并且对于 相关搜索, 您必须使用Javascript版本。(

html
网址中没有此部分)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645382.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号