from bs4 import BeautifulSoup
html="""
<html>
<head>
<title>表格标签学习</title>
<meta charset="UTF-8"/>
<pre>
表格标签学习:
table :声明一个表格
tr:声明一行,设置行高及改行所有单元格的高度.
th:声明一个单元格,表头格.默认居中加黑显示
td:声明一个单元格,默认居左显示原始数据
注意:
行高即改行所有单元格的宽度
单元格的宽度即列宽
属性:
border:给表格添加边框
设置表格的宽度
height:设置表格的高度
cellpadding:设置内容居边框的距离
cellspacing:设置边框的大小
特点:
默认根据数据的多少进行表格的大小显示
单元格的合并:
第一步:
首先确保表格是一个规整的表格
第二步:
根据要合并的单元格,找到其所在的源码位置
第三步:
行合并:在要合并的单元格中的第一个单元格上使用属性rowspan="要合并的单元格的个数",并删除其他要合并的单元格完成合并
列合并:在要合并的单元格中的任意一个上使用属性colspan="要合并的单元格的个数",并删除要合并的其他单元格
</pre>
</head>
<body>
<h3>表格标签学习</h3>
<hr />
<h4>表格标签的常用属性及设置学习:</h4>
<table border="1px" cellpadding="10px" cellspacing="0px">
<tr height="50px">
<th width="100px">科目</th>
<th width="100px">分数</th>
<th width="100px">级别</th>
<th width="150px">说明</th>
</tr>
<tr height="50px">
<td>
<a href="https://www.lagou.com/gongsi/395506.html">第一个</a>
</td>
<td class="1">java</td>
<td>100</td>
<td>8</td>
<td>面向对象的语言</td>
</tr>
<tr height="50px">
<td>
<a href="https://www.lagou.com/gongsi/395501.html" >第二个</a>
</td>
<td>C语言</td>
<td>100</td>
<td>8</td>
<td>面向过程的语言</td>
</tr>
</table>
<hr />
<h4>单元格的合并学习:</h4>
<table border="2px" cellspacing="0">
<tr height="35px">
<td width="100px"></td>
<td width="100px"></td>
<td width="100px"></td>
<td width="200px" colspan="2" rowspan="2"></td>
</tr>
<tr height="35px">
<td colspan="2"></td>
<td></td>
</tr>
<tr height="35px">
<td></td>
<td></td>
<td rowspan="2"></td>
<td></td>
<td></td>
</tr>
<tr height="35px">
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
"""
soup=BeautifulSoup(html,"lxml")
# print(bs.prettify()) #列出所有内容
#1.获取所有tr标签
trs=soup.find_all('tr')
for tr in trs:#tr是Tag类型,它实现了__repr__方法所以返回的是字符串
print(tr)
#2.找出第二个tr标签
tr=soup.find_all('tr',limit=2)[1]#limit最多获取多少元素
print(tr)
#3.获取所有border等于1px的table标签
tables=soup.find_all('table',border='1px')#class的话要class_
# tables=soup.find_all('tr',attrs={'class':'even'})#方式二
for table in tables:
print(table)
#4.将所有border,cellspacing也等于1px的table标签提取出来
tables=soup.find_all("table",border='1px',cellspacing='1px')
tables=soup.find_all("table",attrs={"border":"1px","cellspacing":"1px"})#方式二
for table in tables:
print(table)
#5.获取所有a标签的href属性
aList=soup.find_all("a")
for a in aList:
#1.通过下标的方式
href=a['href']
#2.通过attrs属性的方式
href=a.attrs['href']
#6.获取所有的书目纯文本信息
trs=soup.find_all('tr')[1:3]
for tr in trs:
tds=tr.find_all("td")
title=tds[1]
price=tds[2]
print(title.string)#获取文本
# all_texts=list(tr.strings)#获取tr下所有文本,含空白字符
all_texts=list(tr.stripped_strings)
print(all_texts)