python静态网络爬虫

1.安装Beautiful Soup库

pip install beautifulsoup4

注:包名是beautifulsoup4,如果不加上 4,会是老版本也就是 bs3,它是为了兼容性而存在,目前已不推荐

from bs4 import BeautifulSoup
html='''<ul class="clearfix lavalamp">       
<div class="lavalamp-object" id="nav"></div>    
<li class="navitem-index current" ><a href="/index">首页</a></li>
<li class="lavalamp-item"><a href="/guonei">国内</a></li>        
<li class="lavalamp-item"><a href="/guoji">国际</a></li>        
<li class="lavalamp-item"><a href="/mil">军事</a></li>        
<li class="lavalamp-item"><a href="/finance">财经</a></li>        
<li class="lavalamp-item"><a href="/ent">娱乐</a></li>        
<li class="lavalamp-item"><a href="/sports">体育</a></li>       
<li class="lavalamp-item"><a href="/internet">互联网</a></li></ul>'''
soup=BeautifulSoup(html,"html.parser")

其中语句,soup=BeautifulSoup(html,“html.parser”)首先将html文本内容传入构造方法,得到一个文档对象Soup。第一个参数为html文本内容。html.parser为BeautifulSoup的解析器。Beautiful Soup支持Python标准库、lxml的HTML解析器、lxml的xml解析器、html5lib多种解析器。
解析器优缺点对比如下:
在这里插入图片描述
2.Beautiful Soup基本用法
使用“soup.标签名”的形式可以获取标签内容,如果存在多个同样的标签,返回的内容是第一个标签内容。
在这里插入图片描述
如果想要获取标签中的文本内容,如a标签的文本“首页”两个字。在标签后增加“.string”,就可获取标签内的文本。
在这里插入图片描述
也可以使用嵌套的方式获取
在这里插入图片描述
如果想要获取标签的属性,可以使用“标签[属性]”或“标签.get(属性)”的方式获取属性值。推荐使用“标签.get(属性)”的方式,可有效的进行异常处理。
在这里插入图片描述
3.Beautiful Soup 标准选择器
(1)find_all方法
find_all方法是Beautiful Soup的常用方法搜索当前标签的所有子节点,并判断是否符合过滤器的条件。
例如,获取所有的li标签,代码如下

print(soup.find_all("li"))

也可使用soup.findAll(“li”)或简写为soup(“li”)。返回的数据类型为列表,如需要获取指定的列表项目,通过增加索引获取,注意索引的切片是从0开始。
在这里插入图片描述
如果想通过属性来进行查找,可使用键/值对的形式来传递参数。例如查找li标签中属性class为lavalamp-item的第四个li,代码如下
在这里插入图片描述
这里注意,class_必须带有下划线,因为class是python的语法关键字。如去掉下划线会出现语法错误。
Beautiful Soup也可按照Id来检索,使用方式和按照Class方式查找雷同。

print(soup(id='xxx')) #xxx为具体的id值

(2)get_text方法
如果只想得到标签中包含的文本内容,可以使用get_text()方法。这个方法获取标签中的包含的所有文本内容(包括子孙节点的文本内容)并将结果返回字符串。例如:获取ul标签下所有的文本内容。
在这里插入图片描述
get_text()前选取的对象不能为列表等集合类型。

4.Beautiful Soup CSS选择器
Beautiful Soup支持大部分的CSS选择器,在Tag或 BeautifulSoup对象的.select()方法中传入字符串参数。字符串参数基本上遵照CSS选择器的语法格式。使用CSS选择器使用难度低,但需要注意使用的是select方法返回的是列表类型。
CSS选择器的基本内容,id选择器使用#作为前缀,类选择器使用点(.)作为前缀,元素选择器直接使用标签的名称。
例如,选择id为nav的div标签
在这里插入图片描述
如果需要获取标签中的文本内容除了使用.string外也可使用.text。例如获取第一个class名为lavalamp-item下的a标签文本内容,代码如下
在这里插入图片描述
除了获取标签内的文本外,经常需要获取标签的属性值,可使用attrs方法。例如获取当前html中第一个div的id值,代码如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值