gpt4 book ai didi

python - 刚刚学会了抓取数据并将其存储在我的数据库中,但它只抓取了一个对象

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:45 27 4
gpt4 key购买 nike

首先,我是一个新手,我对 python 和 Django 还很陌生,我最近刚刚尝试抓取我的数据并将其存储在我的数据库中。我已经让它工作了。它只抓取一个对象并存储它。不是多个对象。现在我正在本地开发并试图找出答案。我有这样的 View

def practice(request):
world = get_world_too()

for entry in world:
post = Post()
post.title = entry['text']
post.image_url = entry['src']
post.save()

template = "blog/post/noindex.html"
context = {
}
return render(request, template, context)

这就是函数

        def get_world_too():
url = 'http://www.example.org'
html = requests.get(url, headers=headers)
soup = BeautifulSoup(html.text, 'html5lib')

titles = soup.find_all('section', 'box')[:9]
entries = [{'href': url + box.a.get('href'),
'src': box.img.get('src'),
'text': box.strong.a.text,
} for box in titles]
return entries

如果我刷新页面,它只会抓取并存储多个对象。但我的函数设置为 9,所以我认为这至少有 9 个对象存储在我的数据库中。在 View 中我有一个循环

for entry in world:
post = Post()
post.title = entry['text']
post.image_url = entry['src']
post.save()

那么循环不应该获取所有九个对象吗?我也不知道这不是专业的方法。正如我所说,我只是在练习它。最终,我想将其设置为 heroku cron 作业,以便全天运行几次。但现在我怎样才能让它一次抓取多个对象并将其保存到我的数据库中。

最佳答案

由于这一行,它只经历一次循环:

返回渲染(请求、模板、上下文)

return 在第一次运行时(在第一个循环中)从整个函数中完全返回。如果您想遍历每个循环然后返回,请将 return 移出循环,如下所示:

def practice(request):
world = get_world_too()

for entry in world:
post = Post()
post.title = entry['text']
post.image_url = entry['src']
post.save()

template = "blog/post/noindex.html"
context = {}

# not in the loop anymore
return render(request, template, context)

关于python - 刚刚学会了抓取数据并将其存储在我的数据库中,但它只抓取了一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com