【发布时间】:2022-01-21 06:01:11
【问题描述】:
我有一个我想从 WikiData 网站上抓取的 webid 列表。这里以两个链接为例。
https://www.wikidata.org/wiki/Special:EntityData/Q317521.jsonld https://www.wikidata.org/wiki/Special:EntityData/Q478214.jsonld
我只需要 URL 中的第一组“P31”。对于第一个 URL,我需要的信息是 "wd:Q5",第二个 URL 是 ["wd:Q786820", "wd:Q167037", "wd:Q6881511","wd:Q4830453","wd:Q431289","wd:Q43229","wd:Q891723"],并将它们存储到一个列表中。
当我使用查找并输入“P31”时,我只需要所有结果中的第一个结果。上图说明了
输出将如下所示。
info = ['wd:Q5',
["wd:Q786820", "wd:Q167037", "wd:Q6881511","wd:Q4830453","wd:Q431289","wd:Q43229","wd:Q891723"],
]
lst = ["Q317521","Q478214"]
for q in range(len(lst)):
link =f'https://www.wikidata.org/wiki/Special:EntityData/{q}.jsonld'
page = requests.get(link)
soup = BeautifulSoup(page.text, 'html.parser')
在那之后,我不知道如何从第一组“P31”中提取信息。我正在使用request, BeautifulSoup, and Selenium 库,但我想知道除了使用 XPath 或 Class 之外,还有什么更好的方法可以从 URL 中抓取/提取该信息?
非常感谢!
【问题讨论】:
-
您能更详细地解释一下
first set of "P31"的含义吗?我试图了解这如何应用于第二个 url,从而导致您在上面显示的输出。回复中是否可以有多个 P31?或者多个值与 P31 键关联? -
@QHarr 如果你点击上面的网址会看到一堆信息,如果你使用
find and input P31,它会报告一堆P31,但我只需要第一个P31是所有结果中的结果。 -
@QHarr 我刚刚用截图更新了问题。
标签: python web-scraping beautifulsoup request