刮刮维基百科表没有结果

时间:2017-08-31 11:56:37

标签: python

冒险进入蟒蛇世界。我已经完成了codeacademy课程,并通过堆栈和youtube进行了漫游,但遇到了一个我无法解决的问题。

我正在尝试对维基百科中的表进行简单的打印,在编写我自己的代码时出错不通,我决定使用一个教程示例并进行构建。然而,这不起作用,我没有想到为什么。

这是此处的代码,其中包含适当的链接。我的最终结果是一个空列表“[]”。我正在使用PyCharm 2017.2,beautifulsoup 4.6.0,请求2.18.4& python 3.6.2。任何建议表示赞赏作为参考,教程网站为here

categoryService =
        CategoryClient.getClient().create(CategoryService.class);

Call<ArrayList<Category2>> call = categoryService.getProjectCategories(projectId,token);
call.enqueue(new Callback<ArrayList<Category2>>() {
    @Override
    public void onResponse(Call<ArrayList<Category2>> call, Response<ArrayList<Category2>> response) {
        listCategories = response.body();
        System.out.println("Size: " + listCategories.size().toString());
    }

    @Override
    public void onFailure(Call<ArrayList<Category2>> call, Throwable t) {
        // Log error here since request failed
        Log.e(TAG, t.toString());
    }
});

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式完成此操作。

  1. 您可以通过requests.get(WIKI_URL).content
  2. 获取网站内容
  3. 请参阅网站的源代码,了解维基百科如何以HTML格式呈现表格。
  4. 找到一个可以适合整个表的正则表达式(可能类似于<table>(?P<table>*+?)</table>)。这样做可以在<table></table>令牌之间获得任何内容。使用python进行正则表达式的documentation好。看看re.findall()
  5. 现在你留下了表格数据。您可以再次使用正则表达式来获取每一行的数据,然后在每一行上使用正则表达式来获取列。 re.findall()再次成为关键。