javascript - 在我的站点中使用我的 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。我该怎么做呢?
解决方案
好的,这会有点长,但我将尝试将其分解为简单的步骤。这个答案的目标是:
- 您是否获得了从 python 生成和提供的基本网页。
- 将脚本的结果作为 javascript 插入页面。
- 用数据做一些基本的渲染。
这个答案不是什么:
- 深入的 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 渲染是一个不同的主题,我现在不想让您过多地了解信息。
如果您需要额外帮助,请对此答案发表评论。
推荐阅读
- c# - 数据为空。不能对 Null 值调用此方法或属性。实体框架核心
- java - 如何使用其他相关表的 id 引用添加记录?
- node.js - 带有 TypeScript 的 JQuery 的 Kendo UI
- android - 改造错误 - Android Studio 中的状态码 34
- python - 404 未找到静态文件 - Django
- tensorflow - Do useless values matter in training?
- java - 如何在 BitSet JAVA 中左右移动位?
- postgresql - 如何从外部/应用程序访问容器化的 postgresql 数据库
- sql - 总结列表 PLSQL 中的所有值
- ios - 如何单击自定义表格标题中的按钮并在单击按钮的部分下添加一行?