热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python抓包模块,Python数据抓取_BeautifulSoup模块的使用

在数据抓取的过程中,我们往往都需要对数据进行处理本篇文章我们主要来介绍python的HTML和XML的分析库BeautifulSoupBeautifulSoup的官方

在数据抓取的过程中,我们往往都需要对数据进行处理

本篇文章我们主要来介绍python的HTML和XML的分析库BeautifulSoup

BeautifulSoup 的官方文档网站如下

5a9b2f7be5be

BeautifulSoup官网

BeautifulSoup可以在HTML和XML的结构化文档中抽取出数据,而且还提供了各类方法,可以很方便的对文档进行搜索、抽取和修改,能极大的提高我们数据挖掘的效率

下面我们来安装BeautifulSoup

5a9b2f7be5be

BeautifulSoup模块安装

(上面我已经安装过了,所以没有显示进度条)

非常简单,无非就是pip install 加安装的包名

pip3 install bs4

下面我们开始正式来学习这个模块

首先还是提供一个目标网址

我的个人网站

5a9b2f7be5be

特克斯博客

下面我们通过requests的get方法保存这个网址内容的源代码

import requests

urls = "http://www.susmote.com"

resp = requests.get(urls)

resp.encoding = "utf8"

content = resp.text

with open("Bs4_test.html", 'w', encoding="utf8") as f:

f.write(content)

运行起来,我们马上就能得到这个网页的源代码了

5a9b2f7be5be

网站源代码

下面我们写的程序就是专门针对这个源代码利用BeautifulSoup来分析

首先我们来获取里面所有的a标签的href链接和对应的文本

代码如下

from bs4 import BeautifulSoup

with open("Bs4_test.html", 'r', encoding='utf8') as f:

bs = BeautifulSoup(f.read())

a_list = bs.find_all('a')

for a in a_list:

if a.text != "":

print(a.text.strip(), a["href"])

首先我们从BS4里面导入BeautifulSoup

然后以只读模式打开文件打开文件,我们把f.read()作为BeautifulSoup的参数,也就是将字符串初始化,把返回的对象记为bs

然后我们就可以调用BeautifulSoup的方法了,BeautifulSoup的最常用的方法就是find和find_all,可以在文档中找到符合条件的元素,区别就是找到一个,和找到所有

在这里我们使用find_all方法,他的常用形式是

元素列表 = bs.find_all(元素名称, attires = {属性名:属性值})

然后就是依次输出找到的元素,这里就不多说 了

我们在命令行运行这段代码

5a9b2f7be5be

运行代码

输出结果如下

5a9b2f7be5be

输出结果

找寻的结果太多,不一一呈现

可以看到爬取的链接其中有很多规律

例如标签链接

我们可以对代码进行稍微的更改,以获取网站所有的标签链接,也就是做一个过滤

代码如下

from bs4 import BeautifulSoup

with open("Bs4_test.html", 'r', encoding='utf8') as f:

bs = BeautifulSoup(f.read(), "lxml")

a_list = bs.find_all('a')

for a in a_list:

if a.text != "" and 'tag' in a["href"]:

print(a.text.strip(), a["href"])

大致内容没有改变,只是在输出前加了一个判定条件,以实现过滤

我们在命令行运行这个程序

5a9b2f7be5be

运行代码

结果如下

5a9b2f7be5be

输出结果

除了这样,你还可以使用很多方法达到相同的目标

使用attrs = [ 属性名 : 属性值 ] 参数

属性名我相信学过html的人一定都知道,例如"class","id"、"style"都是属性,下面我们逐步深入,利用这个来深入挖掘数据

获取我的博客网站中每篇文章的标题

经过浏览器调试,我们很容易获取到我的博客网页中标题部分的属性样式

如下图

5a9b2f7be5be

浏览器调试

标题样式是一个

非常简单的一个属性

下面我们通过代码来实现批量获取文章标题

# coding=utf-8

__Author__ = "susmote"

from bs4 import BeautifulSoup

n = 0

with open("Bs4_test.html", 'r', encoding='utf8') as f:

bs = BeautifulSoup(f.read(), "lxml")

header_list = bs.find_all('header', attrs={'class': 'post-header'})

for header in header_list:

n = int(n)

n += 1

if header.text != "":

print(str(n) + ": " + header.text.strip() + "\n")

大体上跟之前的代码没什么差别,只是在find_all方法中多加了一个参数,attrs以实现属性过滤,然后为了使结果更清晰,我加了一个n

在命令行下运行,结果如下

5a9b2f7be5be

运行结果

利用正则表达式来表达属性值的特征

无非就是在属性值后面加一个正则匹配的方法,我在这就不过多解释了,如果想要了解,可以自行上网百度



推荐阅读
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍 Go+ 编程语言中的上下文处理机制,涵盖其基本概念、关键方法及应用场景。Go+ 是一门结合了 Go 的高效工程开发特性和 Python 数据科学功能的编程语言。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了如何使用Python编写爬虫程序,从豆瓣电影Top250页面抓取电影信息。文章涵盖了从基础的网页请求到处理反爬虫机制,再到多页数据抓取的全过程,并提供了完整的代码示例。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 5G至4G空闲态移动TAU流程解析
    本文详细解析了用户从5G网络移动到4G网络时,在空闲态下触发的跟踪区更新(TAU)流程。通过N26接口实现无缝迁移,确保用户体验不受影响。 ... [详细]
author-avatar
lovejiao2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有