在我的网站中使用我的Python Web Crawler

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (71)

我在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。我该怎么做呢?

提问于
用户回答回答于

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

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

这个答案不是:

  1. 一个深入的javascript和python教程。我们不希望一次过多的概念让你超负荷。您最终应该了解数据库和缓存,但这还有待进一步发展。

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

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

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

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

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

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

如果您需要额外帮助,请留下对此答案的评论。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励