gpt4 book ai didi

python - Django Web 应用程序与 BeautifulSoup ,请求

转载 作者:太空宇宙 更新时间:2023-11-03 21:34:35 25 4
gpt4 key购买 nike

我希望有一个网站,当用户输入内容时,他们会获得该网站上的所有抓取数据 View 。

目前,这个 python3 代码通过 jupyter 笔记本工作正常。大家可以在jupyter笔记本上测试一下。但我想要以正确的方式用于用户界面。我知道 Django 可以与 python 代码集成,但我应该把这段代码放在哪里。是 models.py 吗?

from urllib.request import Request, urlopen as uReq 
from bs4 import BeautifulSoup as soup

def make_soup(website) :

req = Request(website,headers = {'User-Agent' : 'Mozilla/5.0'})
uClient = uReq(req)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, 'html.parser')
return page_soup

google_news_url = 'https://www.google.com.my/search?q={}&source=Int&tbm=nws'

def forge_url (q):
return google_news_url.format(q.replace(' ','+'))

news_url = forge_url (input('Enter Search'))
website = make_soup(news_url)
headlines = website.findAll('h3')
n = 0
for item in headlines :
top = item.a
#print(top)
#print()
text_headlines = top.text
print(text_headlines)
print()
n +=1

顺便说一句,我应该在views.py和模板中放置什么。谢谢;)

最佳答案

抓取是一项非常耗时的任务,

获取数据需要花费大量时间,处理数据则需要更多时间。

因此,为了使网站能够进行抓取,您必须定义一些后台任务来完成这项工作,而用户可以做其他事情或查看进程栏。

此外,并非所有网站都是服务器端呈现的,因此您无法通过请求或其他类似库获取页面数据。您可以使用selenium通过浏览器(Firefox和Chrome)打开页面,渲染整个页面,然后将源代码传递给BS等库以提取所需的内容。

所以我的建议是:

  • 构建一个 View 来请求页面 URL,

  • 创建一个或多个后台任务来完成繁重的工作(例如使用 celery)

  • 然后在过程完成时将结果传递给用户。

您可以在这里找到命名库:

Selenium

Celery

关于python - Django Web 应用程序与 BeautifulSoup ,请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53315990/

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