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

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

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)

中tr不能显示字符_BeautifulSoup4中find 和find_all的比较相关推荐

  1. 中tr不能显示字符_垃圾文本识别中基本操作指南和错误总结,第三部分

    创建模型需要用到机器学习的库,所以我们先下载sklearn库 sklearn库 下载完成后再输入库文件,就可以完美运行. 然后就是划分测试集和训练集,需要注意的是,在从数据处理函数中导入数据时,足足运 ...

  2. 《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 简化字符串的translate方法的使用...

    检查字符串中是否包含某字符集合中的字符  任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertoolsdef containAny(seq,aset):f ...

  3. python判断字符串里的字符_Python检测字符串中是否包含某字符集合中的字符

    目的 检测字符串中是否包含某字符集合中的字符 方法 最简洁的方法如下,清晰,通用,快速,适用于任何序列和容器 def containAny(seq,aset): for c in seq: if c ...

  4. 为什么显示服务器升级中,手机老是显示服务器升级中

    手机老是显示服务器升级中 内容精选 换一换 XEN实例变更为KVM实例前,需要确保Windows弹性云服务器已安装了PV driver和UVP VMTools.本节指导您安装PV driver和UVP ...

  5. vb.net中report不显示中文_Ubuntu中vi文本编辑器的使用

    最近在使用ubuntu,对于一个已经熟悉centos下的vi编辑器来说,简直是太变态了,各种不习惯.下面给大家分享下Ubuntu下的vi编辑器详细用法. Ubuntu中vi文本编辑器的使用 :w !s ...

  6. sybase的sysprocesses中的hostname显示不全_Linux中Postfix邮件认证配置(五)

    Postfix+Dovecot+Sasl工作原理 1.A用户使用MUA客户端借助smtp协议登陆smtpd服务器,需要先进行用户和密码认证,而SMTPD服务器端支持sasl认证,例如有一个sasl客户 ...

  7. linux中mysql不显示中文_linux中解决mysql中文乱码方法

    改默认编码: /etc/init.d/mysql start (stop) 为启动和停止服务器 /etc/mysql/ 主要配置文件所在位置 my.cnf /var/lib/mysql/ 放置的是数据 ...

  8. python中print不显示结果_Python中的print()函数

    本文为中国大学MOOC<Python语言程序设计>课程学习笔记,课程主讲:嵩天老师,练习平台:Python123,参考教材:<Python语言程序设计基础> print()函数 ...

  9. C#读取SQLsever数据库中的内容显示在textbox中

    首先建立数据库的连接 然后写SQL语句确认需要获取的字段 string connStr = "server=.;database=MedicineCabinet;Integrated Sec ...

最新文章

  1. mysql的常用函数
  2. 学习ID,ClientID,UniqueID
  3. PPP协议的CHAP验证
  4. mysql 日期字符串互转
  5. jQuery轮 播的封装
  6. python爬去百度百科词条_python简单爬虫爬取百度百科python词条网页
  7. python剪刀石头布_如何用python写剪刀石头布
  8. 端口号及对应的服务汇总 (适用于Linux/Windows系统)
  9. 你选书我买单,包邮送55本!ggplot2、R语言、Python任意什么书都可以!
  10. linux的基本的命令行操作
  11. IE8升级IE11失败原因整理
  12. android 给apk下载地址,Android 7.0适配 APK文件下载及安装问题(FileProvider)
  13. 前端基础——html5新增标签
  14. 云知声开源全栈语音交互方案
  15. 20155325 Exp4 恶意代码分析
  16. 总线揭密:串行传输VS并行传输
  17. android 动态修改dns,如何修改android手机上网DNS
  18. sweetalert弹框插架--自定义多按钮事件
  19. 【点云3D目标检测】跑通CIA-SSD过程中的一些报错集锦
  20. 喊苦喊累的程序员们,看看日本人是怎么加班的。

热门文章

  1. 美多商城之用户注册(展示用户注册页面)
  2. 解决 python pip install安装速度慢| 版本低|跨过个别错误包
  3. Linux里新建文件/目录的默认权限
  4. 百越杯 Reverse (crazy write up)
  5. Mars说光场(4)— 光场显示
  6. pytest文档21-pytest-html报告优化(nodeid中文显示[\u6350\u52a9\u6211\u4eec]问题解决)
  7. 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
  8. PO、VO、FormBean的思考
  9. Oracle表空间管理
  10. mac 下如何使用lrzsz 上传下载文件