> # ♻️ 资源
> **大小:** 43.6MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100013276**](https://www.yuque.com/sxbn/ks/100013276)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/88329405**](https://download.csdn.net/download/s1t16/88329405)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 基于Python实现的通用小规模搜索引擎
## 1.项目简介
### 1.1背景
《信息内容安全》网络信息内容获取技术课程项目设计
- 一个至少能支持10个以上网站的爬虫程序,且支持增量式数据采集;并至少采集10000个实际网页;
- 针对采集回来的网页内容, 能够实现网页文本的分类;
- 可进行重复或冗余网页的去重过滤;
- 对经去冗以后的内容建立倒排索引;
- 采用PageRank算法实现搜索结果的排序;
- 支持自然语言的模糊检索;
- 可实现搜索结果的可视化呈现。
- 可以在线记录每次检索的日志,井可对日志数据进统计分析和关联挖掘。
### 1.2运行环境
- 平台:全平台
- jdk 1.8.0
- ElasticSearch 7.4.0
- Python 3.6 及以上
- 安装依赖模块
- PageRank算法、AI文本分类与上传
```python
> pip install paddlepaddle numpy elasticsearch
```
- 数据的爬取与预处理
```python
> pip install requests bs4
```
### 1.3运行步骤
#### 安装配置ElasticSearch并启动
- [下载](https://www.elastic.co/cn/downloads/elasticsearch) 并解压Elasticsearch,详细步骤自行搜索
- 可以从 apt 和 yum 的软件仓库安装,也可以使用 Windows MSI 安装包安装
- [安装](https://github.com/medcl/elasticsearch-analysis-ik/releases) IK 中文分词器,详细步骤自行搜索
- 创建索引
```json
PUT http://127.0.0.1/page
{
"settings": {
"number_of_shards": "5",
"number_of_replicas": "0"
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"weight": {
"type": "double"
},
"content" : {
"type" : "text",
"analyzer": "ik_max_word"
},
"content_type": {
"type": "text"
},
"url": {
"type": "text",
"analyzer": "ik_max_word"
},
"update_date": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
```
- 启动 ElasticSearch ,在 bash 中执行 `bin/elasticsearch` 或者在 Windows 的 cmd、powershell 执行 `bin\elasticsearch.bat`
#### 启动Web服务
```
> cd WebApp
> java -jar *.jar
```
![15ed4c153a761883c402d556ff1a1bf4.gif](https://cdn.nlark.com/yuque/0/2023/gif/2469055/1694483090561-77018d4f-949d-4e14-8387-3152506d0d4d.gif#averageHue=%232b2b2b&clientId=uedcf728a-ab3e-4&from=paste&height=266&id=u2dfc0cc5&originHeight=332&originWidth=1504&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=242258&status=done&style=none&taskId=u8f2b120b-c0ba-4cfd-bb9d-dcc271bffc3&title=&width=1203.2)
#### 数据的爬取与预处理
```shell
> cd DataCrawler
> python crawler.py
```
![39a82656eed9996f7b35d07463633f99.gif](https://cdn.nlark.com/yuque/0/2023/gif/2469055/1694483124762-c7887121-fba7-4968-868a-4b9f9a2b3eac.gif#averageHue=%232c2b2b&clientId=uedcf728a-ab3e-4&from=paste&height=206&id=u9f35a50a&originHeight=257&originWidth=1045&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=243549&status=done&style=none&taskId=u9e681920-627a-4e52-b1c8-f5e218a849c&title=&width=836)
#### 计算PageRank值
```shell
> cd DataProcess
> python PageRank.py
```
![042c82dc948f11a605fc7941f30d2a29.gif](https://cdn.nlark.com/yuque/0/2023/gif/2469055/1694483152924-b0d22671-52f6-4d97-916f-76b4a2826c32.gif#averageHue=%232b2b2b&clientId=uedcf728a-ab3e-4&from=paste&height=206&id=u04e9e43c&originHeight=257&originWidth=1019&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=98464&status=done&style=none&taskId=uf6bf7179-ab04-4e91-8bb6-46c878541d4&title=&width=815.2)
#### 利用AI进行文本分类并上传至ES
```shell
> cd DataProcess/Text_Classification
> python Classify.py
```
![6979d074ed3d940544871d9522eb597c.gif](https://cdn.nlark.com/yuque/0/2023/gif/2469055/1694483178262-40859b6e-e9c7-43cd-9dda-7539da282bdd.gif#averageHue=%232c2b2b&clientId=uedcf728a-ab3e-4&from=paste&height=206&id=u4c6d21cf&originHeight=257&originWidth=1019&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=111178&status=done&style=none&taskId=u1f7bd8f2-8969-4a6f-b236-93dd7de4598&title=&width=815.2)
## 2.需求分析
### 2.1数据描述
#### 2.1.1 静态数据
| 变量名 | 描述 |
| --- | --- |
| `thread_accoun` | 线程个数 |
| `initial_url` | 种子页面 |
#### 2.1.2 动态数据
| 变量名 | 描述 | 类型 |
| --- | --- | --- |
| `restricted_domain` | 限定域名 | 列表 |
| `banned_domain` | 禁止域名 | 列表 |
| `thread_account` | 线程个数 | 整型 |
| `total_pages` | 限定页面个数 | 整型 |
#### 2.1.3索引数据字典
页面(page)信息索引:
| 数据项名称 | 含义 | 别名 | 类型 | 备注 |
| --- | --- | --- | --- | --- |
| `title` | 网站标题 | | `text` | 使用`ik_max_word`
分词 |
| `weight` | PageRank值 | pr值,PR值 | `double` | |
| `content` | 网站中的内容 | | `text` | 使用`ik_max_word`
分词 |
| `content_type` | 网站中的内容分类 | | `text` | 文化, 娱乐, 体育, 财经, 房产, 汽车, 教育, 科技, 国际, 证券 |
| `url` | 网站的链接 | | `text` | 使用`ik_max_word`
分词 |
| `update_date` | 数据更新的时间 | | `date` | `yyyy-MM-dd HH:mm:ss`
||`yyyy-MM-dd`
||`epoch_millis` |
### 2.2. 数据采集
种子 url 数据从 init_url 列表中选取,并按照顺序,依次以各个 url 为起点进行递归的数据采集
爬取数据的url需要限制在 restricted_url 列表里面
### 2.3功能需求
#### 2.3.1 数据爬取与预处理功能
利用Python爬虫,执行以下步骤:
1. 开始
2. 选取一个链接作为起点
3. 如果爬取的网页总数达到要求,则结束,否则执行第 4 步
4. 爬取指定链接的相关信息,并获取当前网站中的所有链接
5. 对 4 中获取的网站中的所有链接中的每一条数据,执行过程3
爬取网站如下信息,详细描述见[3.4. 索引数据字典](#34-%E7%B4%A2%E5%BC%95%E6%95%B0%E6%8D%AE%E5%AD%97%E5%85%B8)
- title
- content
- content_type
- update_date
- url
- link(当前网站中包含的所有链接,用于计算pr值)
#### 2.3.2. 计算 PageRank 功能
根据`link`计算爬取下来的每个网站的PageRank值,迭代次数为50次。解决pr值呈周期性变化的问题。将pr值作为网站重要程度的指标,并补充到网站信息中
#### 2.3.3. AI 文本分类并提交到 ES 功能
利用深度学习,分析每个页面的content的类别。将类别补充到网站信息中,同时删除网站信息中不再使用的`link`项,形成最终数据(参考[3.4. 索引数据字典](#34-%E7%B4%A2%E5%BC%95%E6%95%B0%E6%8D%AE%E5%AD%97%E5%85%B8)),并上传至ES,供用户交互功能调用。
#### 2.3.4. 用户交互功能
设计WebApp,用户通过浏览器访问页面。用户提交搜索信息后,判断合法性,不合法则返回ERROR界面提示用户。如果合法,则后端代码从本地 E
神仙别闹
- 粉丝: 4134
- 资源: 7483
最新资源
- Matlab根据flac、pfc或其他软件导出的坐标及应力、位移数据再现云图 案例包括导出在flac6.0中导出位移的fish代码(也可以自己先准备软件导出的坐标数据及对应点的位移或应力数据,可根据需
- 拳皇97.exe拳皇972.exe拳皇973.exe
- 捕鱼达人1.exe捕鱼达人2.exe捕鱼达人3.exe
- 医疗骨折摄像检测29-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma数据集合集.rar
- ks滑块加密算法与源代码
- 医护人员检测23-YOLOv8数据集合集.rar
- 1.电力系统短路故障引起电压暂降 2.不对称短路故障分析 包括:共两份自编word+相应matlab模型 1.短路故障的发生频次以及不同类型短路故障严重程度,本文选取三类典型的不对称短路展开研究
- C#连接sap NCO组件 X64版
- 开源基于51单片机的多功能智能闹钟设计,课设毕设借鉴参考
- 深度强化学习电气工程复现文章,适合小白学习 关键词:能量管理 深度学习 强化学习 深度强化学习 能源系统 优化调度 编程语言:python平台 主题:用于能源系统优化调度的深度强化学习算法的性能比较
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈