小白,BeautifulSoup初步整理,后续添加

form bs4 import BeautifulSoup
要导入bs4模块
注意BeautifulSoup大小写
soup = BeautifulSoup(‘html‘,‘html.parser‘)
第一个参数html为要解析的html文档,html是字符串

解析到soup中后才可以开始使用

soup中用的比较多的方法为find_all()
用法有:
soup.find_all(‘a‘)//找出所有的a标签中的内容,返回的是一个数组,数组中的每个元素又是BeautifulSoup对象
find_all()中还可以加属性查询,如:soup.findall(‘a‘,class=‘‘),如果有多个,可以soup.findall(‘a‘,class=[‘c1‘,‘c2‘]),class_中的内容为样式,只要查找的内容中有其中一个样式就行
如:
s = ‘‘‘<a href=‘xxx‘ class=‘c1‘>aaaaaaa</a>
<a href=‘xxx‘ class=‘c2‘></a>
<a href=‘xxx‘ class=‘c1 c3‘></a>
<a href=‘xxx‘ class=‘c1 c2‘></a>‘‘‘
这里面的都可以找出来
还有一种写法:
soup.find_all(‘a‘,attrs={‘class‘:re.compile(‘‘)}),使用正则表达式,

拿到查找内容后,如果要解析标签中的内容
find_all()要循环取
假设拿到其中一个,以a标签为例
拿到的a1 = ‘<a href=‘xxx‘ class=‘c1‘>‘
拿链接:href = a1[‘href‘]
拿标签中的内容:content = a1.string

BeautifulSoup中还有find方法,用法与find_all()一样,只是该方法只取第一个符合条件的

注:如果标签不是成对的,如:<span><img src=‘xxxx‘ ></span>
此时,你用find(‘img‘)是拿不到img标签的,你需要取到他的上级成对标签span
然后在解析span标签中的内容,如
span = soup.find(‘span‘),假设拿到的是‘<span><img src=‘xxxx‘ ></span>‘
此时你需要解析他的子标签,使用children属性
span.children
此时返回的结果是list_itrator对象,要么使用for循环去取,没试过,要么使用next(list_itrator)取,可以拿到第一个子标签<img>
然后拿到src的值:src = next(list_itrator)[‘src‘]
当然如果标签是成对的,直接使用find(‘img‘)
注:
使用BeautifulSoup,以后所有返回带有标签内容的对象都是BeautifulSoup对象(个人理解)
如果要分析的内容太多,可以将需要的字符串内容截取到合适的地方,因为BeautifulSoup解析实在是太耗时间了,虽然方便

原文地址:http://blog.51cto.com/zhangmyname/2160368

时间: 2025-01-01 05:21:47

小白,BeautifulSoup初步整理,后续添加的相关文章

《Java 基础系列》初步整理

<Java 基础系列>初步整理大概有 12 篇,主要内容为.: 抽象类和接口内部类修饰符装箱拆箱注解反射泛型异常集合IO字符串其他第一篇我们来聊聊抽象类和接口. "抽象类和接口"听起来是非常普遍的东西,有些朋友会觉得:这个太基础了吧,有啥好说的,你又来糊弄我. 这里写图片描述 事实上我在面试中不仅一次被问到相关的问题: 抽象类和接口之间的区别?什么时候创建抽象类?什么时候创建接口?设计框架时该如何选择?我比较喜欢这样的问题,答案可深可浅,体现了我们对日常工作的思考. 我们什

聊天单线程(后续添加多线程)

Client 1 package com.tan.chat; 2 3 import java.awt.BorderLayout; 4 import java.awt.Container; 5 import java.awt.event.ActionListener; 6 import java.awt.event.ActionEvent; 7 import java.net.ServerSocket; 8 import java.net.Socket; 9 import java.io.Obje

Liferay 6.2 改造系列之四:重新整理Application添加页面默认提供的Portlet清单

经过2.3两步后,剩余Portlet已经不多,添加Application页面如下: 将用不到的Portlet隐藏起来:11   Portal目录 (Portal Directory) 将内嵌Protlet和IFrame Portlet移到工具分类中. 修改/portal-master/portal-web/docroot/WEB-INF/liferay-display.xml文件: <display> <category name="category.hidden"&

MySql 初步整理

登录/退出基本操作1.在cmd中输入mysql -u root -p 可以登入mysql服务2. quit; 或 exit;  退出3.show databases;  进库4 ues 库名:是选择数据库  例:use mysql;5.看数据库中有哪些表    show  tables;6.看数据. 增删改查(1)select * from user;  查看所有的数据表(2)select user.password from user;  查看password和user的数据表7.备份数据库文

web测试点整理(四) -- 添加/修改/删除功能

声明:是参考了很多他人的文章以及自己的一些经验做了总结,因为时间久远,也没有留下当时的参考链接,如果涉及引用别人的内容,请留言说明,谢谢 添加.修改 特殊键 是否支持Tab键 是否支持回车键 提示信息 不符合要求的地方是否有错误提示 唯一性 字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段(字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性) 数据正确性: 对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查相关联的数

办公小白必学PDF如何添加背景

PDF文件是一种办公室中非常常用的文件格式,可以说每一个办公人士都需要掌握如何修改pdf文件的方法.所以今天,小编就给大家介绍一下如何给pdf添加背景,希望能够给大家带去一些帮助. 1.如果我们想要给PDF文件添加背景,准备一款好用的PDF编辑器是我们第一步需要做的事情,这里小编使用的是迅捷PDF编辑器. 2.将pdf文件打开后,首先我们点击文档按钮,在弹出的选项中选择背景,再通弹出的二级菜单选择添加按钮. 3.在弹出的添加背景设置菜单中,我们可以选择将背景设置为纯色背景或者是图片背景. 4.这

linux 基础实用命令整理--后续还会持续更新

监控: 百度站长工具 smokeping 开源监控,网络监控 真实机器命令监控 ipmitool 可以监控硬件信息 但是需要yum 安装 openlmpi ipmtool 查看系统模块 lsmod| grep ipmi megacli 工具查看raid 磁盘阵列状态 (需要单独安装) lscpu 查看系统cpu 信息 cpu %sys% 内核状态:进程做进程用的时候调用  %us% 用户状态:用户做进程时调用 60%-70%的比例是I/O的瓶颈 sysstat 监控性能 mpstat 监控cpu

Windows快捷键初步整理

shift+方向键 选中当前区域ctrl+c  复制CTRL+v  粘贴shift+ctrl+n  当前页面新建文件夹win+x = 右键开始win+r  运行栏win+r+cmd  dos命令行win+r+notepad  打开记事本win+r+msprint  画图win+e  打开文件夹ctrl+s  保存文件alt+f4  关闭当前页面ctrl+z  撤销win+d  返回桌面ctrl+n(devc++) 新建文件 alt+a  截图窗口prt scsysrq  截图当前屏幕alt+pr

《1024伐木累》-小白篇之需求-总章节八

往期回顾:  丽姐.月侠和老王之间,发生了许多不愉快的事,但最后,老王采用画大饼的策略,成功稳住大家,公司运作也逐渐步入正轨.通过老王的关系,公司与部队达成合作,而刚入公司的耗仔得到老王赏识,成为空军项目的负责人. 小序 时间顺流而下,生活逆水行舟, 面对苦难.挫折, 每个人都有不同应对, 沉默.逃避.悲叹世事不公! 奋起.面对.与命运抗衡到底! 当早晨,窗边划过第一抹阳光, 伸出手轻轻触碰, 还有什么比希望更让人畅快的呢! 引子 “吴博士,你好啊!” 一进门,王总径直朝里面走去. “王总!大驾