本次我们要用自己写好的热销词条爬虫代码来演示如何用Django把我们写好的模型封装。
第一步:代码准备
热搜词条搜集代码:
import requests
from lxml import etreeurl = "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 etreedef 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_topicsurlpatterns = [path('hot-topics/', show_hot_topics, name='hot_topics'),
]
5、在myproject下的setting.py,设置模板路径
# settings.pyTEMPLATES = [{...'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.pyfrom django.urls import path, include
from django.contrib import adminurlpatterns = [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格式有加密,所以访问不了很正常