mongodb搭建校内搜索引擎——爬取网页文本

2024-02-26 14:59

本文主要是介绍mongodb搭建校内搜索引擎——爬取网页文本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标:
读取excle文档中存储的url列表,爬取列表中网页的文本内容

概要:
在已经在获得爬虫获取的url列表的工作基础上,进行网页内容的获取。编程用到request(获取网页源码),BeautifulSoup(解析html,并且获取网页纯文本),lxml(解析html,在使用BeautifulSoup要预先安装),Xlrd(读取excle中内容)

我的思考:
一开始想用正则表达式来判断并且获的网页源码中的内容,但是发现自己的需求是获取所有纯文本的内容,刚开始接触爬虫时尝试过用,当你的需求是提取标题,或者特定单一的内容时,使用正则表示式还是可行的。考虑到我的要求是提取所有的文本内容,正则表达式就是比较局限,要考虑的情况较多,难免会有遗漏,所有去google有没有现有的python模块能干这种事。
果然,找到如下内容:

BeautifulSoup简介

在这里附上BeautifulSoup的中文文档使用链接:
BeautifulSoup4.2.0中文文档
在这里我只是使用了最为简单的方法实现,BeautifulSoup不仅实现了我的需求,而且远比我想象的还要强大。

代码:

#-*-coding:utf8-*-
from bs4 import BeautifulSoup
import requests
import re
import xlrd
import timedef get_text(url):headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"}html=requests.get(url,headers = headers)#获取网页源码html_text=html.textsoup=BeautifulSoup(html_text,"lxml")#用BeautifulSoup获取网页内的纯文本fp_result=open("result.txt","a")result=soup.get_text# print (type(result))row_number=0fp_result.write(url)#打开文件结果以txt文件输出fp_result.write("\n------------------------------------------\n")for text in soup.stripped_strings:#soup.stripped_strings列表逐个输出fp_result.write(str(row_number)+":")fp_result.write(text.encode("utf-8"))#以utf-8编码输出fp_result.write("\n")row_number+=1fp_result.close()#关闭文件def get_xls(path):#打开已经通过爬虫获取的url列表,并且逐个读取urldata=xlrd.open_workbook(path)#打开excle文件table=data.sheets()[0]#打开工作表0nrows=table.nrows#获取行数finished_line=0for i in range(nrows):#逐个输出每行的内容ss=table.row_values(i)#获取列数for j in range(len(ss)):#逐个输出每列的内容finished_line+=1#记录完成进度try:get_text(ss[j])process=1.0*finished_line/nrowsprint "have finished %.3f" %process#记录完成进度print str(finished_line)except requests.exceptions.ConnectionError:#当出现requests.exceptions.ConnectionError时,将错误的链接记录到error.txt文件,错误原因有待进一步研究解决fp_error.write(ss[j]+"\n")print "target finished "+str(nrows)#记录总共的行数fp_error=open("error.txt","a")#打开记录错误的文件
fp_error.write(time.strftime('%Y-%m-%d',time.localtime(time.time())))#记录此次运行时间
fp_error.write("\n------------------------------------------\n")
get_xls("cs.xlsx")#调用函数,获取内容
fp_error.close()#关闭错误文件

这篇关于mongodb搭建校内搜索引擎——爬取网页文本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749240

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

Python实现常用文本内容提取

《Python实现常用文本内容提取》在日常工作和学习中,我们经常需要从PDF、Word文档中提取文本,本文将介绍如何使用Python编写一个文本内容提取工具,有需要的小伙伴可以参考下... 目录一、引言二、文本内容提取的原理三、文本内容提取的设计四、文本内容提取的实现五、完整代码示例一、引言在日常工作和学

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中