zoukankan      html  css  js  c++  java
  • 爬虫12-dind_all语法

    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)
    

      

  • 相关阅读:
    SaaS模式应用之多租户系统开发(单数据库多Schema设计)
    web-api POST body object always null
    linq to js 用法
    c#导出数据到csv文本文档中,数据前面的0不见了解决方法
    金蝶BOS元模型分析
    DotNet 资源大全中文版
    JavaScript中的类方法、对象方法、原型方法
    解决System.Data.SqlClient.SqlException (0x80131904): Timeout 时间已到的问题
    在需要隐藏navigationController控制器
    升级macOS Sierra系统 导致错误 app: resource fork, Finder information, or similar detritus not allowed
  • 原文地址:https://www.cnblogs.com/wcyMiracle/p/12485266.html
Copyright © 2011-2022 走看看