当前位置: 首页 > article >正文

详细教---用Django封装写好的模型

        本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。

第一步:代码准备

热搜词条搜集代码:

import requests
from lxml import etree

url = "https://tophub.today/n/KqndgxeLl9"
headers={
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

res = requests.get(
    url = url,
    headers=headers,
)

# print(res.status_code)

html = etree.HTML(res.text)
trs=html.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr')

def getfirsttext(list):
    try:
        return list[0].strip()
    except:
        return ""
    
# file=open("微博热搜top50.txt",mode="w",encoding="utf-8")
for tr in trs:
    id = getfirsttext(tr.xpath('./td[1]/text()'))
    title=getfirsttext(tr.xpath('./td[2]/a/text()'))
    play=getfirsttext(tr.xpath('./td[3]/text()'))
    url=getfirsttext(tr.xpath('./td[2]/a/@href'))
    print(id,title,play,url)
#     file.write(str(id)+","+title+","+str(play))
# file.close()

第二步:创建Django项目

在你选择存放项目的文件夹中,在命令行终端中执行以下命令来创建一个新的 Django 项目,名为myproject:

django-admin startproject myproject

第三步:配置项目

        1、创建一个应用程序 myapp。

python manage.py startapp myapp

        这将在项目目录下创建一个名为 myapp 的新应用程序,其中包含应用程序的基本目录结构。

        

        2、接下来,创建一个 Django 视图,用来处理请求并将数据呈现在网页上。在你的应用程序中的 views.py 文件中编写如下代码:

        

from django.shortcuts import render
import requests
from lxml import etree

def show_hot_topics(request):
    url = "https://tophub.today/n/KqndgxeLl9"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }

    res = requests.get(url=url, headers=headers)

    html = etree.HTML(res.text)
    trs = html.xpath('/html/body/div[1]/div[2]/div[2]/div[1]/div[2]/div/div[1]/table/tbody/tr')

    hot_topics = []
    for tr in trs:
        id = getfirsttext(tr.xpath('./td[1]/text()'))
        title = getfirsttext(tr.xpath('./td[2]/a/text()'))
        play = getfirsttext(tr.xpath('./td[3]/text()'))
        url = getfirsttext(tr.xpath('./td[2]/a/@href'))
        hot_topics.append({'id': id, 'title': title, 'play': play, 'url': url})

    return render(request, 'hot_topics.html', {'hot_topics': hot_topics})

def getfirsttext(list):
    try:
        return list[0].strip()
    except:
        return ""
    

        3、创建一个模板文件,用来呈现数据。在你的应用程序中创建一个名为 templates 的文件夹,并在其中创建一个名为 hot_topics.html 的文件

     

<!-- 在 myapp/templates/hot_topics.html 文件中 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>热门话题</title>
</head>
<body>
    <h1>热门话题</h1>
    <ul>
        {% for topic in hot_topics %}
            <li>
                <a href="{{ topic.url }}">{{ topic.title }}</a> - 播放量: {{ topic.play }}
            </li>
        {% endfor %}
    </ul>
</body>
</html>

        4、配置 URL 路由,使得当用户访问特定的 URL 时能够触发 show_hot_topics 视图。在你的应用程序中的 urls.py 文件中编写如下代码:

       

from django.urls import path
from .views import show_hot_topics

urlpatterns = [
    path('hot-topics/', show_hot_topics, name='hot_topics'),
]

        5、在myproject下的setting.py,设置模板路径

# settings.py

TEMPLATES = [
    {
        ...
        'DIRS': [BASE_DIR / 'myapp' / 'templates'], # 设置模板文件路径
        ...
    }
]

        6、在myproject下的urls.py,添加URL配置

        path('api/', include('myapp.urls')),            myapp.urls就是指自己的模块文件

'api/'的话,需要http://127.0.0.1:8000/api/hot-topics/    这样去访问。

如果‘’的话,则直接http://127.0.0.1:8000/hot-topics/

# myproject/urls.py

from django.urls import path, include
from django.contrib import admin

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('myapp.urls')),  # 包含应用程序的 URL 配置
]

第四步:启动开发服务器

进入刚刚创建的 myproject 目录,并执行以下命令以启动开发服务器:

cd myproject
python manage.py runserver

输入网址http://127.0.0.1:8000/api/hot-topics/

注意,这个url格式有加密,所以访问不了很正常


http://www.kler.cn/a/274764.html

相关文章:

  • springboot 与 oauth2 版本对应关系
  • 介绍 Html 和 Html 5 的关系与区别
  • web3跨链桥协议-Nomad
  • springboot443旅游管理系统(论文+源码)_kaic
  • 解决 Amazon S3 管理控制台中 5GB 大小限制的问题
  • AcWing 2. 01背包问题
  • 如何本地部署1Panel面板
  • 【2024年5月备考新增】《软考真题分章练习 - 6 项目成本管理(高项)》
  • NLP---Bert分词
  • 除了大众点评,中国未来还会产生多少家这样的人工智能公司? - 学习Yelp公司的软件工程-评价和推荐系统
  • C++ 输入输出
  • 前端之各浏览器间差异和平台的兼容性问题
  • 计算机网络——协议层次及服务模型
  • 【0274】从shared init file或local init file加载relation cache(2 - 1)
  • JSONP 实现跨域请求案例
  • Python分析无人驾驶汽车在桂林市文旅行业推广的问卷
  • 00_coolprop_in_matlab在Matlab中使用CoolProp
  • 飞天使-k8s知识点26-kubernetes温故知新1-pod
  • 在idea中配置tomcat服务器,部署一个项目(下载教程加链接)
  • 【爬虫】实战-爬取Boss直聘信息数据
  • docker小白第十四天之Portainer与CIG
  • Go语言之函数、方法、接口
  • 数据在内存中的存储(C语言)(难点,需多刷几遍)
  • Nginx发布之后可以使用IP访问,不能使用localhost访问, Nginx发布之后可以使用localhost访问,不能使用IP访问,
  • Selenium WebDriver使用EC来定义显式等待的条件
  • Python内置对象