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

相关文章

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

通过C#获取PDF中指定文本或所有文本的字体信息

《通过C#获取PDF中指定文本或所有文本的字体信息》在设计和出版行业中,字体的选择和使用对最终作品的质量有着重要影响,然而,有时我们可能会遇到包含未知字体的PDF文件,这使得我们无法准确地复制或修改文... 目录引言C# 获取PDF中指定文本的字体信息C# 获取PDF文档中用到的所有字体信息引言在设计和出

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步