博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【总结】BeautifulSoup速查手册
阅读量:6260 次
发布时间:2019-06-22

本文共 942 字,大约阅读时间需要 3 分钟。

hot3.png

一、下载网页

response = urllib2.urlopen(page_link, timeout=time_out)web_page = response.read()

二、解码网页(解决中文乱码问题):

decode_s = web_page.decode("utf-8")

三、将字符串转化成树状结构:

soup = BeautifulSoup(decode_s, "lxml")

 

 

接下来进入正题(假设搜索这么一段HTML标签):

LMN

ABCDEFGHIJK

OPQRST

如果我们想取出ABCDEFGHIJK的话(不带<a>标签):

四、遍历寻找特定元素

for tag in soup.find_all("div"):

五、判断特定属性是否在该元素内:

if tag.attrs is not None and 'class' in tag.attrs.keys():

六、判断该属性的内容是否等于特定值(对于空格分隔的情况,需要判断list长度):

if len(tag.attrs['class']) == 2 and    tag.attrs['class'][0] == 'cell' and    tag.attrs['class'][1] == 'maket':

七、取出该标签下子标签的元素:

tag.h1.get_text()

 

 

取得children时候的注意事项:children返回一个可迭代元素,但这个迭代里面的元素不全都是tag,极有可能是bs4.element.NavigableString,所以迭代操作元素的时候,首先要判断一下元素的类型:

for span in tag.parent.children:                if isinstance(span, element.Tag) and                    span.attrs is not None and                    'class' in span.attrs.keys():

 

转载于:https://my.oschina.net/u/2996334/blog/1787567

你可能感兴趣的文章
免费有理之文件备份软件
查看>>
JavaSE6基于JSR105的XML签名之理论篇
查看>>
hadoop命令——hdfs
查看>>
cocos2d-x自制工具04:AnimatePacker for Mac/Win32 v2.0 Build1发布!
查看>>
ORA 12592的报错处理及补丁更新
查看>>
修改活动目录服务器的IP地址及域名注意
查看>>
C#发送电子邮件
查看>>
xslt中的for-each排序
查看>>
在SQL Server2005中进行错误捕捉
查看>>
Net操作配置文件(Web.config|App.config)通用类
查看>>
文本编辑器实例
查看>>
EntityFramework之一对一关系(二)
查看>>
我心中的核心组件(可插拔的AOP)~调度组件quartz.net续~任务管理器的开发(CronTrigger强大功能)...
查看>>
Html2Text
查看>>
spring boot + mybatis实现一对一,一对多的样码之一种
查看>>
Android OpenGL ES 应用(二) 纹理
查看>>
谈谈D2
查看>>
解决li在ie,firefox中行高不一致问题
查看>>
[译] OpenStack Liberty 版本中的53个新变化
查看>>
How to mount usb device in CentOS?
查看>>