首页 > 解决方案 > 在我的站点中使用我的 Python Web Crawler

问题描述

我在 Python 3.7 中创建了一个 Web Crawler,它提取不同的信息并将它们存储到 4 个不同的数组中。我现在遇到了一个不知道如何解决的问题。我想在我的站点中使用这四个数组中的数据,并将它们放入由 JS 和 HTML/CSS 制成的表格中。如何从我的 JavaScript 文件中的 Python 文件访问信息?在创建帐户之前,我尝试在其他地方搜索,并遇到了一些关于使用 Json 的内容,但我对这些不太熟悉,如果这是这样做的方法,我将不胜感激。我将在下面发布我的代码,我将其存储在与其他站点文件相同的目录中。提前致谢!

from requests import get
from bs4 import BeautifulSoup
from flask import Flask
app = Flask(__name__)


@app.route("/")
def main():
    # lists to store data
    names = []
    gp = []
    collectionScore = []
    arenaRank = []

    url = 'https://swgoh.gg/g/21284/gid-1-800-druidia/'
    response = get(url)

    soup = BeautifulSoup(response.content, 'html.parser')

    # username of the guild members:
    for users in soup.findAll('strong'):
        if users.text.strip().encode("utf-8") != '':
            if users.text.strip().encode("utf-8") == '\xe9\x82\x93\xe6\xb5\xb7':
                names.append('Deniz')
            else:
                names.append(users.text.strip().encode("utf-8"))
        if users.text.strip().encode("utf-8") == 'Note':
            names.remove('Note')
        if users.text.strip().encode("utf-8") == 'GP':
            names.remove('GP')
        if users.text.strip().encode("utf-8") == 'CS':
            names.remove('CS')

    print(names)

    # GP of the guild members:
    for galacticPower in soup.find_all('td', class_='text-center'):
        gp.append(galacticPower.text.strip().encode("utf-8"))
    totLen = len(gp)

    i = 0
    finGP = []
    while i < totLen:
        finGP.append(gp[i])
        i += 4
    print(finGP)

    # CS of the guild members:
    j = 1
    while j < totLen:
        collectionScore.append(gp[j])
        j += 4
    print(collectionScore)

    # Arena rank of guild member:
    k = 2
    while k < totLen:
        arenaRank.append(gp[k])
        k += 4
    print(arenaRank)

if __name__ == "__main__":
    app.run()

TLDR:我想在 JavaScript 或 HTML 文件中使用四个列表 - finGP、names、collectionScore 和 arenaRank。我该怎么做呢?

标签: javascriptpythonhtmlpython-3.x

解决方案


好的,这会有点长,但我将尝试将其分解为简单的步骤。这个答案的目标是:

  1. 您是否获得了从 python 生成和提供的基本网页。
  2. 将脚本的结果作为 javascript 插入页面。
  3. 用数据做一些基本的渲染。

这个答案不是什么:

  1. 深入的 javascript 和 python 教程。我们不想一次用太多的概念让您超负荷。您最终应该了解数据库和缓存,但那是更进一步的事情。

好的,这就是我想让你先做的事情。阅读并实施本教程,直到“创建注册页面”部分。这开始涉及与 Mysql 打交道,这不是您现在需要担心的事情。

接下来,您需要在请求服务器时执行您的抓取脚本。当您返回结果时,您将这些结果输出到脚本标记内的 html 页面模板中,如下所示:

<script>
  const data = [];
  console.log(data);
</script>

在括号内data = []使用json.dumps( https://docs.python.org/2/library/json.html ) 将 Python 数组数据格式化为 json。Json 实际上是 javascript 的子集,因此您只需在此处将其输出为原始 javascript 字符串,然后通过 script 标签将其加载到网页中。

脚本标签中的console.log语句将在浏览器的开发工具中显示数据。

现在,让我们在这里暂停一下。首先完成所有这些工作(可能需要几个小时到一天的工作)。使用 javascript 进行 html 渲染是一个不同的主题,我现在不想让您过多地了解信息。

如果您需要额外帮助,请对此答案发表评论。


推荐阅读