大佬教程收集整理的这篇文章主要介绍了Django 网页抓取,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个正在处理的 Django 项目,用于从网站上抓取数据并将其显示在 Django 页面上。然而,该页面需要大约 10 秒才能加载,因为从另一个网站访问数据并不快。我对此的解决方案是创建一个存储数据的模型,然后在后台更新自身,但我不知道如何执行此操作。我也对其他选择持开放态度,我对此很陌生:)
这是目前我的代码的样子,太慢了:
from django.shortcuts import render
import requests,Json
def getNums():
from bs4 import BeautifulSoup
import time,urllib.request,requests
url = "https://www.worldometers.info/coronavirus/"
response = requests.get(url)
soup = BeautifulSoup(response.text,"HTML.parser")
numberContainers = soup.select(".maincounter-number")
spanTags = []
for container in numberContainers:
spanTags.append(container.findChildren("span"))
numbers = []
for container in spanTags:
numbers.append(container[0].decode_contents())
return numbers
def homeVIEw(request):
numbers = getNums()
cases = numbers[0]
deaths = numbers[1]
recovered = numbers[2]
context = {
"cases": cases,"deaths": deaths,"recovered": recovered,}
return render(request,"home.HTML",context)
在研究多线程之后,我想到了这个答案:
def getNums():
from bs4 import BeautifulSoup
import time,urllib.request,requests
url = "https://www.worldometers.info/coronavirus/"
response = requests.get(url)
soup = BeautifulSoup(response.text,"html.parser")
numberContainers = soup.select(".maincounter-number")
spanTags = []
for container in numberContainers:
spanTags.append(container.findChildren("span"))
numbers = []
for container in spanTags:
numbers.append(container[0].decode_contents())
data = Data.objects.all()[0]
data.cases = numbers[0]
data.deaths = numbers[1]
data.recovered = numbers[2]
data.save()
print("i got here")
def homeView(request):
t1 = Thread(target=getNums)
t1.start()
data = Data.objects.all()[0]
context = {
"cases": data.cases,"deaths": data.deaths,"recovered": data.recovered
}
return render(request,"home.html",context)
以上是大佬教程为你收集整理的Django 网页抓取全部内容,希望文章能够帮你解决Django 网页抓取所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。