【问题标题】:How To Use BeautifulSoup In Django?如何在 Django 中使用 BeautifulSoup?
【发布时间】:2019-09-01 11:39:01
【问题描述】:

我试图在 Django 中创建一个网站,它基本上从谷歌新闻中抓取数据并将其放在我的网站上。但我不知道如何在我的 Django HTML 文件中使用从谷歌新闻中提取的数据。有没有办法让我做到这一点。

另外,它会大大降低网站速度,所以这是最好的方法吗?

网页抓取代码:

from bs4 import BeautifulSoup
import requests
url = "https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en"
headers = {
    "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
page = requests.get(url, headers=headers)
soup = BeautifulSoup(page.content, 'html.parser')
n = 1
for link in soup.findAll('h3', {'class', 'ipQwMb ekueJc RD0gLb'}):
    title = link.string
    for a in link.findAll('a', {'class', 'DY5T1d'}): 
        href = a.get('href')
        link_href = href.replace(".", "")
        print("(" + str(n) + ")" + title + "\n" + "https://news.google.com" + link_href)
        n += 1

【问题讨论】:

  • 最好的方法是添加一些后台任务(cron 作业)以从谷歌新闻中获取数据,并将该数据添加到您的数据库中。然后从数据库中获取数据,这样可以比您当前实现的速度快得多。有几个选项可以添加后台任务,如 celery、rq 等
  • 我有点明白你在说什么,但仍然不知道如何实现它,我希望你能解释一下。你看,谷歌新闻每隔一小时更新一次,所以它会在数据库中存储大量信息,这是个好主意吗?

标签: python django beautifulsoup django-2.2


【解决方案1】:

即使这篇文章现在很旧,我的回答也可能会帮助其他人;) 您必须实施线程以避免页面变慢,而抓取过程(或任何需要时间的过程)。意味着一个任务应该总是得到一个新线程。在 YouTube 和 google 上查找多线程有很多教程,甚至是专门针对 Django 的。 祝你好运,享受编码:)

【讨论】:

  • 提供基于 OPs 代码的编码示例以提高质量。带有代码和解释的答案通常更有帮助,质量更好,并且更有可能吸引投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 2012-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多