信息内容安全实验二

Python Django 爬取网页并解析网页源码

一、原理

使用python爬取网页源码,有很多库文件可以调用,但是这里我们使用BeautifulSoup模块,整个爬取过程很简单,首先是请求到网页源码,然后是处理成html格式,再使用筛选条件选出我们想要的标签内容,最后是替换掉多余和不想要的的内容,最后在呈现到网页中。

二、编译器

Pycharm (在新建项目中选择Django,因为我们使用的是Django框架)

三、实验流程

1、新建项目

在这里插入图片描述
进入pycharm,选择新建项目,如上图所示,选择Django,进行相应的配置,然后选择创建,在创建后初始文件如下所示:
在这里插入图片描述

2、建立应用

在完成创建新项目后,点击下方的终端(Terminal)在终端中输入命令:python manage.py startapp demo输入完后回车,左侧项目栏便创建了新的应用,完整项目如下所示:
在这里插入图片描述
注意:其中demo文件夹中的spider.py 、urls.py以及templates文件夹中的post.html都是自己创建的,初始并没有。

3、修改Settings.py文件

在创建完应用后,首先就要到settings.py文件中注册应用,如下图所示:
在这里插入图片描述
如上图所示,在这一块代码的最后一行输入我们的应用名,即可完成注册,后面不要忘记逗号!
接下就是继续在这个文件中进行修改,修改模板路径,修改结果如下图所示:
在这里插入图片描述
在修改模板路径之前,我们需要导入一个模块:import os
到这里Settings.py文件的修改就结束了

4、数据库迁移

在配置完成Settings以后,再次打开终端命令行,在其中输入python manage.py makemigrations demo这条命令中的demo就是应用名,自己定义了什么应用名就写什么,在执行完这一条命令以后会创建一个新的文件,如下图所示:
在这里插入图片描述
如果报错,直接网络上搜索命令,强制创建文件,在完成上一步后,再在终端中输入python manage.py migrate demo,回车以后,就会提示一连串的OK,到这里这一步就算是完成了

5、创建爬虫文件

到了这一步,就是开始编写爬虫的文件,这里我们在demo这个文件夹下创建一个python文件,随意命名,创建完成后进入文件,进行代码的编写:

from bs4 import BeautifulSoup
import requests
from os import replace
def Spider(Url):
    Res1 = requests.get(url=Url).text
    Res = BeautifulSoup(Res1).find_all('div',class_='showtxt')
    Res_Text = Res[0].text.replace('  ','')
    print(Res_Text)
    return Res_Text

上述代码,只是对特定网站来编写的,用来获取小说内容,其中的find_all()函数中的筛选条件需要根据网页源码中的标签内容进行更改,接下来的replace()函数,也是根据获取内容来进行更改,这个函数是用来替换掉多余和没用的内容。
这里变量的命名比较随意,如果你觉得自己写的更加简洁方便,可以直接替换,只需要注意后续的调用就可以了

6、创建Html文件

html文件主要是对内容进行渲染,以特定的呈现方式进行呈现,代码如下所示:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
    <form action="/search-post/" method="post">
        {% csrf_token %}
        <input type="text" name="q">
        <input type="submit" value="搜索">
    </form>
<div>
    <div><label>网页源码:</label></div>
    <textarea rows="20" cols="150">{{ pro_data }}</textarea>
    <div><label>文本数据:</label></div>
    <textarea rows="20" cols="150">{{ spiders }}</textarea>
</div>
</body>
</html>

这里的html文件中涉及到了表单和模板,就不进行解释了,不懂得直接用就可以,懂得自然就懂!

7、修改Views.py文件

在这里对数据的请求进行处理,代码如下所示:

from django.shortcuts import render
from .spider import Spider,Spider1
from django.views.decorators import csrf

def search_post(request):
    ctx ={}
    pro_data = {}
    data = {}
    if request.POST:
        ctx['rlt'] = request.POST['q']
        pro_data['pro_data'] = Spider1(ctx['rlt'])
        data['data'] = Spider(ctx['rlt'])
    return render(request, "post.html", context={
        'pro_data':pro_data['pro_data'],
        'spiders':data['data']
    })

这里我们导入了spider.py文件,用来调用spider函数,从而获取网页源码和解析,这里对ctx的赋值,就是从网页输入框中获取的内容,也就是网址。

8、配置urls.py

在初始文件中,应用文件夹中并没有urls.py文件,所以在demo文件夹中创建urls.py文件,但是在配置这个文件之前,需要在另一个urls.py中先编写以下内容:

from django.contrib import admin
from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('demo.urls'))

完成以上内容后,再回到我们自己创建的urls.py中编写新的内容,代码如下所示:

from django.urls import path
from . import views
urlpatterns = [
    path('search-post/', views.search_post,name='A'),
]

这里的search-post,可以自己更改

9、访问网页

完成以上所有内容后,再次打开终端,输入以下命令:python manage.py runserver 127.0.0.1:8080
回车以后,如果是下图所示,就表明运行成功:
在这里插入图片描述
此时打开浏览器,输入http://127.0.0.1:8080/search-post/(这里search-post就是urls.py中的search-post,那个文件中你写的是什么,这里就写什么),结果如下图所示:
在这里插入图片描述
这里是解析后的图片,正确的操作方式为,在输入框中输入网址,点击搜索,然后在下方的显示框中,就会显示网页的源码和解析后的文本内容。

这里解析的网页网址为:笔趣阁

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值