BeautifulSoup 知识点学习

from bs4 import  BeautifulSoup
from lxml import etree
import codecs#codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换

#实例化BeautifulSoup对象
#数据解析
#数据存取
#将本地文档对象加载到html中

html=open('./test.html','r',encoding='utf-8')
soup=BeautifulSoup(html,'lxml')#用lxml解析器解析,实例化好的的soup对象
#print(soup)输出实例化对象soup
#print(soup.li)#返回的是html中第一次出现的tagName标签,不返回所有的标签
#print(soup.find('div'))#等同于soup.div 返回第一个div 内的全部内容
#print(soup.find('div',class_='song'))#返回指定class='song'标签,打印整个标签内容都返回#标签属性定位

#print(soup.find_all('a'))#打印所有a标签内所有内容,以列表形式返回
#print(soup.find_all('a')[0])#返回第一个a标签

#print(soup.select('.tang'))#以列表返回tang标签内的所有内容
#print(soup.find('div',class_='tang'))#返回的是字符串,等同于soup.select('.tang')

#print(soup.select('.tang>ul>li>a'))#用>表示层级关系,打印所有li线面的所有a 标签,不支持索引print(soup.select('.tang>ul>li[0]>a'))
#print(soup.select('.tang>ul>li>a')[0])#不写【0】,返回li下所有a 标签,写了返回第一个a 标签
#print(soup.select('.tang>ul a')[0])#中间加空格,可以不是直属属性,比ul 直属属性是li ,加空格 打印第一个a

# print(soup.select('.tang>ul a')[1].text)#text输出文本返回第二个a标签中的文本值
# print(soup.select('.tang>ul a')[1].get_text())
# print(soup.select('.tang>ul a')[1].string)

#print(soup.find('div',class_='song').text)#返回所找标签下所有文本
#print(soup.find('div',class_='song').string)#返回为空,只能获取标签下直系文本(就是song文本,但song 没有文本)
#print(soup.find('div',class_='song').get_text())#返回所找标签下所有文本

#print(soup.select('.tang>ul a')[0]['href'])#获取a标签下的href链接
# print(soup.select('.tang>ul a')[5]['href'])
# print(soup.find('title').text)
# print(soup.select('.tang>ul i')[0].text)
f=codecs.open("test.html","r","utf-8")#转换字符后打开
content=f.read()#读取文本
f.close()#问价关闭
html1=etree.HTML(content)
so=html1.xpath('//title/text()')[0]
so1=html1.xpath('//ul/li/i/text()')[0]
so2=html1.xpath('//ul/li/a/@href')[5]
print(so2)

 test.html文件如下

<!DOCTYPE html>
<html>
    <head>
        <title>测试bs4</title>
        <meta charset=utf-8" />
    </head>
    <body>
        <div>
            <p>百里守约</p>           
        </div>
        <div class="song">
            <p>李清照</p>
            <p>王安石</p>
            <p>苏轼</p>
            <p>柳宗元</p>
           <a href="http://www.song.com/" title="赵匡胤" target="_self">
	            <span>this is span</span>
	            宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
             <a href="" class="du">总为浮云能蔽日,长安不见使人愁</a>
             <img src="http://www.baidu.com/meinv.jpg" alt=""/>
         </div>
        <div class="tang">
	<ul>
	      <li><a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂</a></li>
	      <li><a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还</a></li>
	      <li><a href="http://www.126.com" alt="qi">岐王宅里寻常见,崔九堂前几度闻</a></li>
	      <li><a href="http://www.sina.com" class="du">杜甫</a></li>
	      <li><a href="http://www.dudu.com" class="du">杜牧</a></li>
	      <li><b>杜小月</b></li>
	      <li><i>度蜜月</i></li>
	      <li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流杜牧</a></li>
	      <li></li>
	</ul>   
         </div>         
    </body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值