ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

bs4进行数据解析基础教程

2021-07-07 17:31:15  阅读:185  来源: 互联网

标签:tang 断魂 bs4 soup 路上行人 基础教程 print 解析 select



from bs4 import BeautifulSoup
import os
fp = open('C:/Users/axyzw/Downloads/爬虫课件/第三章:数据解析./test.html','r',encoding='utf-8')
soup = BeautifulSoup(fp,'lxml')

源文件

<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" 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>
		</ul>
	</div>
</body>
</html>
#soup.tagName:返回的是文档中第一次出现的tagName对应的标签
print(soup.a)#a标签很多组,只返回了一组
<a href="http://www.song.com/" target="_self" title="赵匡胤">
<span>this is span</span>
		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
print(soup.div)
<div>
<p>百里守约</p>
</div>
#find('tagName'):等同于soup.div
print(soup.find('div'))
<div>
<p>百里守约</p>
</div>
#属性定位 soup.find('div',class_/id/attr='song')
print(soup.find('div',class_='song'))# class需要加下划线,不加的话不代表属性
<div class="song">
<p>李清照</p>
<p>王安石</p>
<p>苏轼</p>
<p>柳宗元</p>
<a href="http://www.song.com/" target="_self" title="赵匡胤">
<span>this is span</span>
		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>
<a class="du" href="">总为浮云能蔽日,长安不见使人愁</a>
<img alt="" src="http://www.baidu.com/meinv.jpg"/>
</div>
#soup.find_all('tagName'):返回符合要求的所有标签(列表)
print(soup.find_all('a'))
[<a href="http://www.song.com/" target="_self" title="赵匡胤">
<span>this is span</span>
		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱</a>, <a class="du" href="">总为浮云能蔽日,长安不见使人愁</a>, <a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a>, <a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a>, <a alt="qi" href="http://www.126.com">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a>, <a class="du" href="http://www.sina.com">杜甫</a>, <a class="du" href="http://www.dudu.com">杜牧</a>, <a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a>]
#select('某种选择器(id,class,标签...选择器)'),返回的是一个列表。
print(soup.select('.tang'))
[<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 alt="qi" href="http://www.126.com">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a></li>
<li><a class="du" href="http://www.sina.com">杜甫</a></li>
<li><a class="du" href="http://www.dudu.com">杜牧</a></li>
<li><b>杜小月</b></li>
<li><i>度蜜月</i></li>
<li><a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a></li>
</ul>
</div>]
#soup.select('.tang > ul > li > a'):>表示的是一个层级
print(soup.select('.tang > ul > li > a'))
[<a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a>, <a href="http://www.163.com" title="qin">秦时明月汉时关,万里长征人未还,但使龙城飞将在,不教胡马度阴山</a>, <a alt="qi" href="http://www.126.com">岐王宅里寻常见,崔九堂前几度闻,正是江南好风景,落花时节又逢君</a>, <a class="du" href="http://www.sina.com">杜甫</a>, <a class="du" href="http://www.dudu.com">杜牧</a>, <a href="http://www.haha.com" id="feng">凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘</a>]
print(soup.select('.tang > ul > li > a')[0])
<a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a>
#oup.select('.tang > ul a'):空格表示的多个层级  效果和原本一样
print(soup.select('.tang > ul a')[0])
<a href="http://www.baidu.com" title="qing">清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村</a>
#获取标签之间的文本数据:
#            - soup.a.text/string/get_text()
print(soup.select('.tang > ul a')[0].text)
print(soup.select('.tang > ul a')[0].string)
print(soup.select('.tang > ul a')[0].get_text())
清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村
清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村
清明时节雨纷纷,路上行人欲断魂,借问酒家何处有,牧童遥指杏花村
#- text/get_text():可以获取某一个标签中所有的文本内容,不属于直系也能获取
#            - string:只可以获取该标签下面直系的文本内容
print(soup.find('div',class_='song').text)
李清照
王安石
苏轼
柳宗元

this is span
		宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱
总为浮云能蔽日,长安不见使人愁


print(soup.find('div',class_='song').string)#该内容下面没有直系属性
None
#        - 获取标签中属性值:
#            - soup.a['href']
print(soup.select('.tang > ul a')[0]['href'])
http://www.baidu.com

标签:tang,断魂,bs4,soup,路上行人,基础教程,print,解析,select
来源: https://blog.csdn.net/weixin_41413511/article/details/118552844

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有