中tr不能显示字符_BeautifulSoup4中find 和find_all的比较

news/2024/7/3 2:27:50

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)

1

7686

0f3e8a7e4b68d33f97f8672cc6100c16.png

例题:查询大学排名的四种方法

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,可以用属性

e141ebc27f5b550d96bdfb4693858582.png

#方法一: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)

172f329436f71742c20185fb7806e46f.png

#方法三: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)


http://lihuaxi.xjx100.cn/news/283576.html

相关文章

我翻译的一篇文章,OO设计中对象的创建和使用

OO设计中对象的创建和使用 转载于:https://www.cnblogs.com/lishu1980/archive/2006/06/22/432526.html

3月9日起陆续开学!快来看看有没有你所在的省份

导读 青海、贵州已明确了部分学校的开学时间!近日,青海省人民政府发布《青海省人民政府通告(第15号)》,明确了部分学校的开学时间,具体如下:普通高中、中等职业学校原则上3月9日至13日陆续开学&…

【JavaEE】SpringBoot 拦截器详解 (统⼀功能处理)

目录✅1. 用户登录权限效验1.1 Spring AOP 用户统⼀登录验证的问题1.2 Spring 拦截器1.2.1 自定义拦截器1.2.2 将自定义拦截器加入到系统配置1.3 拦截器实现原理1.4 扩展:统⼀访问前缀添加2. 统一异常处理3. 统一数据返回格式3.1 为什么需要统⼀数据返回格式&#x…

python编程之slice与indices函数用法

这篇文章主要介绍了详解python编程中slice与indices使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪一般来说,内置的slice()函数会创建一个切片对象,可以用在任何允许进…

JavaScript移除绑定在元素上的匿名事件处理函数

前言: 面试的时候有点蒙,结束之后想想自己好像根本就误解了面试官的问题,因为我理解的这个问题本身就没有意义。但是当时已经有一些思路,但是在一个点上被卡住。 结束之后脑子瞬间灵光,想出了当时没有迈出的那一小步。…

jpa删除数据后数据库无修改_java – JPA不删除数据库行

我正面临着JPA的删除问题,这是我的代码:public deleteLine(int idLine) {Line line em.find(Line.class,idLine);Header header line.getHeader();this.deleteLine(header,line);}public boolean deleteLine(Header header, Line line) {try {line.setIdArticle(n…

漫画:什么是LRU算法?

本期封面作者:A17————— 两个月前 —————用户信息当然是存在数据库里。但是由于我们对用户系统的性能要求比较高,显然不能每一次请求都去查询数据库。所以,小灰在内存中创建了一个哈希表作为缓存,每次查找一个用户的时候…

Windows Live Messenger  正式版已经发布

Windows Live Messenger 正式版已经发布!这是新一代的 Messenger。它拥有全新的名字,可以免费下载。并且除了延续使用原 Messenger 的全部功能外,它还提供了几种出色的全新交流方式,实现与朋友的即时共享和交流。转载于:https://www.cnblogs.…