爬取网页内所有的url和meta标签,title标签

2024-05-26 15:08

本文主要是介绍爬取网页内所有的url和meta标签,title标签,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个东西实际是最基础的东西,但是也是遇到了很多的坑,在这里记录如下。
此时我手里有了各种网页,从网上用wget工具下载的各种网页源码文件,大多是html文件,有的是php等等,都能使用html的格式打开。
为了的提出网页里面的所有信息建立图表,为以后的数据挖掘做准备。明白目的之后,首先是相对于其他爬虫有点不同的是有了网页源码。省去了下载的环节

第一步 使用python将网页的源码打开

这里面我使用了一个很好用的库,beautifulsoup工具,此工具的下载和安装,网上有很多教程,基于bs4,另外我发现在pycharm中你点取改正之后的import也可以直接下载这些包,免去在cmd里面pip install。

还有一个问题:因为当时我处理的路径名和下载的html文件中有空格存在的,此时就遇到一个问题,如果在后期处理词向量则使用空格进行字符分割会遇到大麻烦,所以为了保证出来的文本字符符合要求,先要遍历数据集中所有的文件和目录,将其中所有的空格字符替换一下x.replace(’ ‘,”)
,这个真给我搞醉了,一中午总算解决了,速度够慢的,后来还卡在一个183的错误上,卡了半天。(昨天在这里写的没有保存)在清理文件和文件夹名字的空格中遇到一个错误,显示error183,经过仔细的巡查应该出现在系统的错误上,比如在一个文件夹下有两个文件一个文件是w(2).html 一个文件是w (2).html 在这两个文件中,当程序处理到w (2).html时会将里面的空格去掉造成,两个文件名相同,所以返回一个系统错误,所以只能选择处理这样的错误,看处理到那里就直接将文件删除或者手动修改。
完整的源码如下

#coding:utf-8#主要功能是将一个目录文件中所有的目录和文件名字的空格删除
import osif True:i=0for parent, dirnames, filenames in os.walk(os.getcwd()):if i!=0 :#因为提取的第一个目录为根目录,导致循环的第一步总是出错,所以写一个条件判断省去第一步print parent[x, s] = os.path.split(parent)print os.path.join(x,s)print os.path.join(x, s.replace(' ', ''))#rename() 在使用的时候出现了很多次183的错误,原因是#文件中有两个文件一个有空格一个没有空格,对有空格的文件进行操作之后就会导致命名相同,程序报错os.rename(os.path.join(x,s), os.path.join(x,s.replace(' ', '')))print xprint scontinueelse:i=i+1

第二步 将网页中的url扣出来,直接使用的是匹配a标签内的href的值,加一个是否包含http的判断,将url存储起来。

第三步 扣取网页中meta信息,包括name=description ,keywords,还有p标签,li标签内部的文本等等

在beautiful中有一个很好用的方法是fand_all(),这个方法直接查找某个标签,然后对其直接操作就可以得到纯文本文件,所以在这里我直接谢了一个list将几个标签放进去了‘p’‘li’‘a’等等。
关于这个标签的问题,我一直也很奇怪到底哪些标签里面是有字符的,哪些是没有字符的,可以看到这几个标签基本上涵盖了所有的文本信息,所以,如有不对可以批评,后来发现实际‘meta’标签内的文本也是可以写在这个循环里面的,最后的版本中,将循环也写进去了,这里就不说了,随后会仿出来代码。
写一个循环之后,遍历每一个标签,使用一个方法处理得到文本代码如下

lists = ['p', 'a', 'td', 'li', 'span']
for list in lists:text1 = soup.find_all(list)for c in text1:x = strip_tags(str(c))print(x.replace('\n', ' '))if x != None:sheet1.write(j, col_num, x.replace('\n', ' '))col_num = col_num + 1

扣取出来文本之后,存在一个很小的错误,由于使用了记事本打开,这样记事本是一个含有utf-8 带BOM的编码格式,这样就造成在文件头虽然不显示,但是却有一些字符,造成半天不能把这些文本分割输出为单列的关键词数据,这是一个教训,下一次不要使用记事本打开txt文件,我使用了一个komo的工具,代码字体很像ubuntu 很好用。

第四步 提取每一个标签的关键字出来,

输入到google中搜索,经过TF_IDF的处理提取网页上面较为‘重要’的词,将这些词输入到google中进行搜索,得到排名靠前的url再次提取这些网页的关键词,这样就可以建立文本之间的联系。在这里google搜索的步骤,并没有自己写,我看了一篇博客,他介绍了自己写的工具,magic-google,github地址为https://github.com/howie6879/php-google 这一个工具使用了伪造浏览器信息和选用不同区域的google地址的方法来防止google的封锁。我们就不用造轮子了。代码我就不再放了,很简单,写两个循环,遍历所有训练文件,每个训练文件取TF_IDF值前几的关键词输入就ok

(不定时更新遇到的各种坑,做记录使用)

这篇关于爬取网页内所有的url和meta标签,title标签的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

C#实现获得某个枚举的所有名称

《C#实现获得某个枚举的所有名称》这篇文章主要为大家详细介绍了C#如何实现获得某个枚举的所有名称,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... C#中获得某个枚举的所有名称using System;using System.Collections.Generic;usi

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

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

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SpringBoot实现基于URL和IP的访问频率限制

《SpringBoot实现基于URL和IP的访问频率限制》在现代Web应用中,接口被恶意刷新或暴力请求是一种常见的攻击手段,为了保护系统资源,需要对接口的访问频率进行限制,下面我们就来看看如何使用... 目录1. 引言2. 项目依赖3. 配置 Redis4. 创建拦截器5. 注册拦截器6. 创建控制器8.

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打