有人可以帮助我了解如何在我的程序中注入对该网页的查询吗?
有两个参数需要设置,即
“站点:”是您输入语言和站点代码的地方。
&
“页面:”,您必须输入所连接站点上显示的页面的确切标题。
URL 总是如下所示:
https://www.wikidata.org/wiki/Special:ItemByTitle?site=en&page=Mikhail+Bakunin&submit=Search
https://www.wikidata.org/wiki/Special:ItemByTitle?site=en&page=Thomas+Edward+Lawrence&submit=Search
语言总是英语,所以你看,它只是:
https://www.wikidata.org/wiki/Special:ItemByTitle?site=en&page=
呸呸呸+
_&submit=Search
查询该页面的目的是检索与该页面关联的 ID 值,因此 for Mikhail Bakunin
it'sQ27645
和 for T. E. Lawrence
it'sQ170596
一旦到达页面,它就会成为 URL 的一部分:
https://www.wikidata.org/w/index.php?title=Q170596&site=en&page=Thomas+Edward+Lawrence&submit=Search
但也许我可以从页面中删除它,使用 beautifulSoup 或 soemthng?(这是一个猜测)
程序需要泛化,也就是说,我们要搜索的实体名称是可变的,在程序中会发生变化,所以需要考虑到这一点。
我想使用 python 或 php 或其他东西如果更容易的话不会是反人类罪,尽管我更喜欢 java。
更新:
import java.net.*;
import java.io.*;
public class URLConnectionReader
{
public static void main(String[] args) throws Exception
{
URL site = new URL("https://www.wikidata.org/wiki/Special:ItemByTitle?site=en&page=Mikhail+Bakunin&submit=Search");
URLConnection yc = site.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
System.out.println(inputLine);
in.close();
}
}
这有点工作,但结果很混乱。
我想我可以从这件事中抓住它:
<!-- wikibase-toolbar --><span class="wikibase-toolbar-container"><span class="wikibase-toolbar-item wikibase-toolbar ">[<span class="wikibase-toolbar-item wikibase-toolbar-button wikibase-toolbar-button-edit"><a href="/wiki/Special:SetSiteLink/Q27645">edit</a></span>]</span></span>
但如何?