网站首页 > 技术文章 正文
BeautifulSoup4中find 和find_all分别有不同的含义,find返回的是TAG对象,只有一个值,可以直接使用属性例如,children。而find_all返回的是TAG对象的迭代对象,不能直接用TAG的属性,但是里面每个元素是TAG,可以用属性
import requests
from bs4 import BeautifulSoup
import bs4;
mytext=requests.get("http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html")
mytext.encoding="utf-8"
mysoup=BeautifulSoup(mytext.text)
t1=mysoup.find("td")
t2=mysoup.find_all("td")
print(type(t1))
print(type(t2))
#find返回的是TAG对象,只有一个值,可以直接使用属性例如,children
#而find_all返回的是TAG对象的迭代对象,不能直接用TAG的属性,但是里面每个元素是TAG,可以用属性
print(t1)
print(len(t2))
# t2=mysoup.find_all("td")
# for i in t2:
# print(i.string)
# for i in t1:
# if isinstance(i,bs4.element.Tag):
# x=i.find_all("td")
# print(len(x),end=" ")
# print(x[0].string,x[1].string,x[2].string,x[3].string,x[4].string)
<class 'bs4.element.Tag'>
<class 'bs4.element.ResultSet'>
<td>1</td>
7686
例题:查询大学排名的四种方法
import requests
from bs4 import BeautifulSoup
import bs4;
mytext=requests.get("http://www.zuihaodaxue.cn/zuihaodaxuepaiming2019.html")
mytext.encoding="utf-8"
mysoup=BeautifulSoup(mytext.text)
#find返回的是TAG对象,只有一个值,可以直接使用属性例如,children
#而find_all返回的是TAG对象的迭代对象,不能直接用TAG的属性,但是里面每个元素是TAG,可以用属性
#方法一:find
print("---111"*30)
t1=mysoup.find("tbody").children
print(type(t1))
for i in t1:
if isinstance(i,bs4.element.Tag): #列表中TAG对象,有非TAG对象,是大量的空格
x=i.find_all("td") #表格中的一行
print(len(x),end=" ") #列表里面元素个数
print(x[0].string,x[1].string,x[2].string,x[3].string,x[4].string)
#方法二:find_all---1
print("---222"*30)
t2=mysoup.find_all("tbody")
print('mysoup.find_all("tbody")',type(t2),len(t2))
tt=t2[0] #取列表里面的第一个元素,是TAG,
print('mysoup.find_all("tbody")[0]',type(tt),len(tt))
for i in tt:
if isinstance(i, bs4.element.Tag): # 列表中TAG对象,有非TAG对象,是大量的空格
x = i.find_all("td") # 表格中的一行
print(len(x), end=" ") # 列表里面元素个数
print(x[0].string, x[1].string, x[2].string, x[3].string, x[4].string)
#方法三:find_all---2
print("---333"*30)
t2=mysoup.find_all("tbody")#网页的取表格
print('mysoup.find_all("tbody")',type(t2),len(t2))
tt=t2[0] #取列表里面的第一个元素,是TAG,取第一个表格
print('mysoup.find_all("tbody")[0]',type(tt),len(tt))
tt1=tt.find_all("tr")#取表格里面的所有行
for i in tt1:
j=i.find_all("td")#每行里面的素有列
for x in j:
print(x.string,end=" ")#每列数据输出
print()
#方法四:find,find_all
print("---444"*30)
t1=mysoup.find("tbody")#网页的第一个取表格
tt1=t1.find_all("tr")#取表格里面的所有行
for i in tt1:
j=i.find_all("td")#每行里面的素有列
for x in j:
print(x.string,end=" ")#每列数据输出
print()
print("-444-over"*10)
- 上一篇: 一课译词:驴友 驴友的意思?
- 下一篇: 怎么查看电脑连接的wifi密码?一条命令就OK
猜你喜欢
- 2024-11-12 如何快速查询您的订单号及相关信息
- 2024-11-12 只需要一串代码,就能查出电脑连接过的所有WIFI的密码
- 2024-11-12 如何快速查询和追踪您的订单号? 如何快速查询和追踪您的订单号信息
- 2024-11-12 新机谍中谍:OPPO Find N3 Flip配置提前看 精致小巧出片利器
- 2024-11-12 vlookup查找数据,无法区分字母大小写咋办?这3种方法都能搞定
- 2024-11-12 全新“一碰互传”即将登陆一加13手机:与iPhone碰一碰就能传照片
- 2024-11-12 怎么查看电脑连接的wifi密码?一条命令就OK
- 2024-11-12 一课译词:驴友 驴友的意思?
- 2024-11-12 JavaScript 中搜索数组元素的四种方法
- 2024-11-12 日本未来创造人才制度(J-Find)办理流程说明
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-