本次我们要用自己写好的热销词条爬虫代码来演示如何用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格式有加密,所以访问不了很正常