> # ♻️ 资源
> **大小:** 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
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100013276 《信息内容安全》网络信息内容获取技术课程项目设计 一个至少能支持10个以上网站的爬虫程序,且支持增量式数据采集;并至少采集10000个实际网页; 针对采集回来的网页内容, 能够实现网页文本的分类; 可进行重复或冗余网页的去重过滤; 对经去冗以后的内容建立倒排索引; 采用PageRank算法实现搜索结果的排序; 支持自然语言的模糊检索; 可实现搜索结果的可视化呈现。 可以在线记录每次检索的日志,井可对日志数据进统计分析和关联挖掘。
资源推荐
资源详情
资源评论
收起资源包目录
100013276-基于Python实现的通用小规模搜索引擎.zip (37个子文件)
acs_design-master
DataCollect
crawler.py 8KB
LICENSE 1KB
需求分析.md 12KB
DataProcess
PageRank.py 5KB
Text_Classification
dict_txt.txt 59KB
Classify.py 6KB
infer_model
sequence_conv_1.w_0 196KB
fc_0.b_0 64B
sequence_conv_1.b_0 416B
fc_0.w_0 5KB
fc_0.w_1 4KB
sequence_conv_0.w_0 192KB
sequence_conv_0.b_0 537B
embedding_0.w_0 2.31MB
__model__ 39KB
images
PageRank.gif 96KB
logo.png 17KB
AI.gif 109KB
crawler.gif 238KB
homePage.png 56KB
launchWeb.gif 237KB
WebApp
Searcher-1.0.0.jar 44.94MB
README.md 24KB
RawData
0d98cbf460f42c3e71ba24b5df67b962.json 15KB
840c7b0ec61d972a7445a0f117c09357.json 11KB
1caed511c9b2fd1adf0c5efaf448b9df.json 9KB
e5b51470ef1341e1a375f30e5b307148.json 11KB
4bc1e161fedb724f813a26543c3ccba8.json 10KB
9508f68f5b49d2eacbcee4d61bd8a179.json 15KB
dc6ed29671f0d6c62186d658053914dd.json 10KB
bdde98ce790341aec0e17bdd05592f81.json 10KB
5e60834b16f5dc3589b007e6f7d0bfff.json 10KB
f560735997f8978ccbdf286ce5bc0899.json 11KB
4d580f3f81942cedd5f7a4f3a4f5026c.json 9KB
92baa542e4ec27a3f5b9329b512f12fd.json 9KB
f85aecfb17b9bbad43f9c909f115a2b9.json 11KB
3cb41e0709e06f28d45a9e57b741e1d2.json 9KB
共 37 条
- 1
资源评论
- 2301_768900712024-03-10资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
神仙别闹
- 粉丝: 3774
- 资源: 7469
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功