如何通过 BS4 获取维基百科页面的维基数据项的 Q 编号?

inf*_*mer 2 python wikipedia beautifulsoup

您可以在该维基百科页面左侧边栏的“工具”下找到即维基数据项。如果将鼠标悬停在该 上,您可以找到如下链接地址,末尾带有 Q 号。 https://www.wikidata.org/wiki/Special:EntityPage/Q15112。如何提取 Q 号码?

from bs4 import BeautifulSoup
import requests

getUrl= 'https://en.wikipedia.org/wiki/Ariyalur_district'
url = getUrl
content = requests.get(url).content
soup = BeautifulSoup(content,'lxml')
#extracting page title
firstHeading = soup.find('h1',{'class' : 'firstHeading'})
print(firstHeading.text +'~')
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的代码很好。我试图通过下面的代码获取 Q 号码,但我不能。请指导我。

QNumber = soup.find('li','t-wikibase')
print(QNumber)
Run Code Online (Sandbox Code Playgroud)

如何获得Q号码?

cs9*_*s95 5

您需要明确指定您要查找的选择器,id在本例中:

In [1601]: QNumber = soup.find('li', {'id' : 't-wikibase'})

In [1604]: QNumber.a['href']
Out[1604]: 'https://www.wikidata.org/wiki/Special:EntityPage/Q15112'
Run Code Online (Sandbox Code Playgroud)

如果您只想要此链接末尾的号码,您可以这样做:

In [1605]: QNumber.a['href'].rsplit('/')[-1]
Out[1605]: 'Q15112'
Run Code Online (Sandbox Code Playgroud)