Python:检查维基百科文章是否存在
我想知道如何检查维基百科的文章是否存在。比如说,Python:检查维基百科文章是否存在,python,Python,我想知道如何检查维基百科的文章是否存在。比如说, https://en.wikipedia.org/wiki/Food 然而,它是存在的 https://en.wikipedia.org/wiki/Fod 没有,页面上简单地说,“维基百科没有一篇有这个确切名称的文章。” 谢谢 >>> import urllib >>> print urllib.urlopen("https://en.wikipedia.org/wiki/Food").getcode()
https://en.wikipedia.org/wiki/Food
然而,它是存在的
https://en.wikipedia.org/wiki/Fod
没有,页面上简单地说,“维基百科没有一篇有这个确切名称的文章。”
谢谢
>>> import urllib
>>> print urllib.urlopen("https://en.wikipedia.org/wiki/Food").getcode()
200
>>> print urllib.urlopen("https://en.wikipedia.org/wiki/Fod").getcode()
404
可以吗
或
尽管Wikipedia确实提供了一个页面,但如果您查看其请求和响应数据,您将看到:
- 状态:未找到
- 代码:404
import urllib
urllib.urlopen("https://some-url").getcode()
返回要在代码中测试的请求的状态代码。基本上,大多数网站或web服务都会在HTTP响应标头中宣布每个HTTP请求的某些状态。
在您的情况下,您可以简单地找到状态代码,如果它是404,而文章不存在,即使您的浏览器呈现的页面与正常结果类似
import request
result = request.get('https://en.wikipedia.org/wiki/Food')
if result.status_code == 200: # the article exists
pass # blablabla
您可以使用WikipediaAPI for Python,只需使用关键字即可搜索文章。它还建议您搜索与之密切相关的可用文章。检查下面的示例
>>> import wikipedia as wiki
>>> wiki.search("Barack")
[u'Barak (given name)', u'Barack Obama', u'Barack (brandy)', u'Presidency of Barack Obama', u'Family of Barack Obama', u'First inauguration of Barack Obama', u'Barack Obama presidential campaign, 2008', u'Barack Obama, Sr.', u'Barack Obama citizenship conspiracy theories', u'Presidential transition of Barack Obama']
>>> wiki.search("Ford", results=3)
[u'Ford Motor Company', u'Gerald Ford', u'Henry Ford']
是python模块的链接。奇怪的是,它看起来真的像以下问题:这是python 2代码。在Python3中,您将使用
urllib.request.urlopen
,这是Python2代码。在Python 3中,您将使用urllib.request.urlopen。
>>> import wikipedia as wiki
>>> wiki.search("Barack")
[u'Barak (given name)', u'Barack Obama', u'Barack (brandy)', u'Presidency of Barack Obama', u'Family of Barack Obama', u'First inauguration of Barack Obama', u'Barack Obama presidential campaign, 2008', u'Barack Obama, Sr.', u'Barack Obama citizenship conspiracy theories', u'Presidential transition of Barack Obama']
>>> wiki.search("Ford", results=3)
[u'Ford Motor Company', u'Gerald Ford', u'Henry Ford']