Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django使用BeautifulSoup?_Python_Django_Beautifulsoup_Django 2.2 - Fatal编程技术网

Python 如何在Django使用BeautifulSoup?

Python 如何在Django使用BeautifulSoup?,python,django,beautifulsoup,django-2.2,Python,Django,Beautifulsoup,Django 2.2,我试着在Django创建一个网站,它基本上是从google新闻中抓取数据并放到我的网站上。但我不知道如何在Django HTML文件中使用从google新闻中提取的数据。我有没有办法做到这一点 而且,这会大大降低网站的速度,所以这是最好的方法吗 网页抓取代码: from bs4 import BeautifulSoup import requests url = "https://news.google.com/?hl=en-IN&gl=IN&ceid=IN:en" header

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

而且,这会大大降低网站的速度,所以这是最好的方法吗

网页抓取代码:

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

即使这篇文章现在已经过时了,我的答案可能会帮助其他人 您必须实现线程化,以避免在执行刮取过程(或任何需要时间的过程)时页面速度减慢。意味着一个任务应该总是得到一个新线程。在YouTube和google上查找多线程有很多教程,甚至专门针对Django。
祝您好运并享受编码:)

最好的方法是添加一些后台任务(cron作业),以便从谷歌新闻获取数据,并将这些数据添加到数据库中。然后从数据库中获取数据,这样可以比当前实现快得多。有两个选项可以添加背景任务,如-芹菜,rq etcI有点像你所说的,但仍然不知道如何实现它,我希望你解释得更多。你看,谷歌新闻每隔一小时就会更新一次,所以它会在数据库中存储大量信息,这是个好主意吗?提供基于OPs代码的编码示例以提高质量。带有代码和解释的答案通常更有帮助,质量更好,更有可能吸引选票。这并不能提供问题的答案。一旦你有足够的钱,你将能够;相反-