python爬虫之bs4进行数据解析(2)

python爬虫之bs4进行数据解析(2)

本文前面内容可参考:python爬虫之bs4进行数据解析

BeauytifulSoup对象提供的用于数据解析的方法和属性:

1、soup.tagName:返回的是文档中第一次出现的tagName对应的标签
2、soup.find():
(1)find(‘tagName’):等同于soup.div
(2)属性定位:soup.find(‘div’,class_/id/attr=‘song’)
(3)soup.find_all(‘tagName’):返回符合要求的所有标签(列表)

select:

1、select(‘某种选择器(id,class,标签…选择器)’),返回的是一个列表。
2、层级选择器:
(1)soup.select(‘.tang > ul > li > a’):>表示的是一个层级
(2)soup.select(‘.tang > ul a’):空格表示的多个层级

获取标签之间的文本数据:

(1)soup.a.text/string/get_text()
(2)text/get_text():可以获取某一个标签中所有的文本内容
(3)string:只可以获取该标签下面直系的文本内容

获取标签中属性值:

(1)soup.a['href]
测试网页text.html文件如下:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试bs4</title>
</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" title="qi">岐王宅里寻常见,崔久堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
            <li><a href="http://www.sina.com" title="du">杜甫</a></li>
            <li><a href="http://www.dudu.com" title="du">杜牧</a></li>
            <li><b>杜小月</b></li>
            <li><i>度蜜月</i></li>
            <li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
        </ul>
    </div>
</body>
</html>

爬虫测试代码如下:

from bs4 import BeautifulSoup
if __name__ == '__main__':
    fp = open('./text.html','r',encoding='utf-8')
    soup = BeautifulSoup(fp,'lxml')
    # print(soup)
    # print(soup.a)#soup.tagName 返回的是文档中第一次出现的tagName对应的标签
    # print(soup.div)
    #find('tagName'):等同于soup.div
    # print(soup.find('div')) #print(soup.div)
    # print(soup.find('div',class_='song'))
    # print(soup.find_all('a'))
    # print(soup.select('.tang'))
    print(soup.select('.tang > ul a')[0]['href'])
  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值