爬虫12-dind_all语法
from bs4 import BeautifulSoup html=""" <html> <head> <title>表格标签学习</title> <meta charset="UTF-8"/> <pre> 表格标签学习: table :声明一个表格 tr:声明一行,设置行高及改行所有单元格的高度. th:声明一个单元格,表头格.默认居中加黑显示 td:声明一个单元格,默认居左显示原始数据 注意: 行高即改行所有单元格的宽度 单元格的宽度即列宽 属性: border:给表格添加边框 width:设置表格的宽度 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)