python3 爬虫相关学习9:BeautifulSoup 官方文档学习

news/2024/11/28 22:40:06/

目录

1 BeautifulSoup 官方文档

报错暂时保存

2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容

2.1 代码和运行结果

2.2 用beautiful 打开 本地 html 文件

2.2.1 本地html文件

2.2.2 soup1=BeautifulSoup(html1,"lxml")

2.3 用requests打开 本地 html 文件

2.3.1 本地html文件

2.3.2 print(html1)

3 用bs 和 requests 打开 本地html的区别:一个独立的html文件

3.1 独立创建一个html文件

3.2 下面是新得代码和运行结果

3.3 用beautiful 打开 本地 html 文件

3.4 用 read() 打开 本地 html 文件

3.5 用requests打开 本地 html 文件

4  f.write(soup1.prettify()) 和 html 用 read()读出来 差别很大


1 BeautifulSoup 官方文档

Beautiful Soup: We called him Tortoise because he taught us.icon-default.png?t=N4P3https://www.crummy.com/software/BeautifulSoup/

 

Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 中文 文档icon-default.png?t=N4P3https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/

Beautiful Soup 4.4.0 文档 — beautifulsoup 4.4.0q 文档icon-default.png?t=N4P3https://beautifulsoup.readthedocs.io/zh_CN/latest/

 

报错暂时保存

r""

OSError: [Errno 22] Invalid argument: 'E:\\work\\FangCloudV2\\personal_space\x02learn\\python3\\html0003.html'

 

    soup1=BeautifulSoup(open(html1,"html.parser"))
ValueError: invalid mode: 'html.parser'

 

   with open(path1 ,"a") as f
                              ^
SyntaxError: expected ':'
 

 

  •  soup1=BeautifulSoup(html1,"lxml")
  • lxml 是解析方式
  • 如果不写,默认也会采用 lxml的解析
  • 如果写成 soup1=BeautifulSoup(html1) 可以正常运行,但是会提醒

 AttributeError: 'str' object has no attribute 'text'

requests.exceptions.InvalidSchema: No connection adapters were found for '<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title"><b>The Dormouse\'s story</b></p>\n\n<p class="story">Once upon a time there were three little sisters; and their names were\n<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,\n<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and\n<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;\nand they lived at the bottom of a well.</p>\n\n<p class="story">...</p>\n'

2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容

2.1 代码和运行结果

#E:\work\FangCloudV2\personal_space\2learn\python3\py0003.txtimport requests
from bs4 import BeautifulSoup#html文件内容
html1 = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p><p class="story">...</p>
"""#"测试bs4"
print ("测试bs4")
soup1=BeautifulSoup(html1,"lxml")
print (soup1.prettify())#"对比测试requests"
print ("对比测试requests")
#res=requests.get(html1)
res=html1
#print (res.text)
print (res)

 

 

2.2 用beautiful 打开 本地 html 文件

#"测试bs4"

html1="""  ... """
print ("测试bs4")
soup1=BeautifulSoup(html1,"lxml")
print (soup1.prettify())

2.2.1 本地html文件

  • 这次的本地html 文件是写在 python 脚本内容一起的 一段文本
  • html1=""" ...  """

2.2.2 soup1=BeautifulSoup(html1,"lxml")

  • 正确写法
  • soup1=BeautifulSoup(html1,"lxml")
  • lxml 是解析方式
  • 如果不写,默认也会采用 lxml的解析
  • 如果写成 soup1=BeautifulSoup(html1) 可以正常运行,但是会提醒

 

2.3 用requests打开 本地 html 文件

#"对比测试requests"
print ("对比测试requests")
#res=requests.get(html1)
res=html1
#print (res.text)
print (res)

2.3.1 本地html文件

  • 这次的本地html 文件是写在 python 脚本内容一起的 一段文本
  • html1=""" ...  """
  • 本地文件 html 已经是一段 脚本内的文本  """  ..."""

2.3.2 print(html1)

本地文件 html 已经是一段 脚本内的文本  """  ..."""

  • 正确写法1 
  • res=html1
  • print (res)

  • 正确写法2
  • print (html1)

  • 错误写法1
  • #print (res.text)
  • 只有html作为网页结构的时候,可以用  html.text 取到其中的string  内容
  • 所以 
  • requests.get(url) 
  • requests.get(url).text

requests.exceptions.InvalidSchema: No connection adapters were found for '<html><head><title>The Dormouse\'s story</title></head>\n<body>\n<p class="title"><b>The Dormouse\'s story</b></p>\n\n<p class="story">Once upon a time there were three little sisters; and their names were\n<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,\n<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and\n<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;\nand they lived at the bottom of a well.</p>\n\n<p class="story">...</p>\n'

 

  • 错误写法2
  • #res=requests.get(html1)
  • 一样的原因
  • 因为这里的html1 不是网页,而已经是网页的内容string了!

AttributeError: 'str' object has no attribute 'text'

 

3 用bs 和 requests 打开 本地html的区别:一个独立的html文件

3.1 独立创建一个html文件

 

3.2 下面是新得代码和运行结果

代码

#E:\work\FangCloudV2\personal_space\2learn\python3\py0003-1.txt
#E:\work\FangCloudV2\personal_space\2learn\python3\html0003.htmlimport requests
import os
import time
from bs4 import BeautifulSouppath1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
soup1=BeautifulSoup(open(path1))
print ("测试bs4")
print (soup1.prettify())path2=r'E:\work\FangCloudV2\personal_space\2learn\python3\html0003-1.html'
if not os.path.exists(path2):              os.mkdir(path2) with open(path2 ,"a") as f:f.write("测试bs4")f.write(soup1.prettify())print ("对比测试requests")
with open(path1 ,"r") as f:res=f.read()
print (res)with open(path2 ,"a") as f:f.write("对比测试requests")f.write(res)"""
#地址,路径,前都记得加 r, 因为string 内部包含\/等转义符,rawdata安全
url1="E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
url1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
res=requests.get(url1)
#本地地址不能像网址 url这样用,用的\/不同,即使用 raw r 也不行. 可以用转格式函数吗?
#https://www.baidu.com/
"""

运行结果

 

 

另存为的文件内容

 

3.3 用beautiful 打开 本地 html 文件

path1=r"E:\work\FangCloudV2\personal_space\2learn\python3\html0003.html"
soup1=BeautifulSoup(open(path1))
print ("测试bs4")
print (soup1.prettify())

path2=r'E:\work\FangCloudV2\personal_space\2learn\python3\html0003-1.html'
if not os.path.exists(path2):              
    os.mkdir(path2) 

with open(path2 ,"a") as f:
    f.write("测试bs4")
    f.write(soup1.prettify())

最大的差别

  • soup1=BeautifulSoup(open(path1))
  • soup1.prettify() 输出格式化得内容

 

3.4 用 read() 打开 本地 html 文件

  • 和  read()读出来的内容 (应该和 requests.get()得出来得内容一样)

print ("对比测试requests")
with open(path1 ,"r") as f:
    res=f.read()
print (res)

with open(path2 ,"a") as f:
    f.write("对比测试requests")
    f.write(res)
 

 

3.5 用requests打开 本地 html 文件

  • 没试过
  • 这种本体html没法试把?

4  f.write(soup1.prettify()) 和 html 用 read()读出来 差别很大

和  read()读出来的内容 (应该和 requests.get()得出来得内容一样)


http://www.ppmy.cn/news/350443.html

相关文章

英特尔Thunderbolt(雷电)控制器驱动

Thunderbolt(雷电)超高速接口技术的研发初衷是为了替代并统一目前电脑上数量繁多性能参差不齐的扩展接口&#xff0c;比如SCSI, SATA, USB, FireWire和 PCI Express。该技术主要用于连接PC和其他设备&#xff0c;融合了PCI Express数据传输技术和DisplayPort显示技术这两项成熟…

windows驱动程序

概念:驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。 故障表现:声卡驱动故障就会没有声音、网卡驱动故障问…

下载官方Intel的Windows 10网卡驱动

1.打开官方Intel网站 #请点击以下链接打开Intel官方网站: Intel官方网站 2.点击支持的下载中心 3.选择以太网产品

ixgbe网卡驱动Ⅱ---- 驱动注册

目录 1 ixgbe 网卡注册驱动 1.1 ixgbe_driver 类 1.2 ixgbe_driver 注册/注销 2 ixgbe 的 PCI 注册驱动流程 pci_register_driver() 3 ixgbe 网卡探测 ixgbe_probe()【核心】 3.1 ixgbe_info 选取 3.2 net_device/ixgbe_adapter 分配 3.3 读取eeprom中的mac地址&…

ixgbe网卡驱动(一)

注册网卡驱动 和大部分设备驱动一样&#xff0c;网卡驱动是作为一个module注册到kernel的 通过module_init() -> ixgbe_init_module() -> pci_register_driver()注册ixgbe_driver 通过module_exit() -> ixgbe_exit_module() -> pci_unregister_driver()注销ixgbe_…

电机驱动

实现电机的滑行、正转、反转和制动&#xff0c;通过&#xff30;&#xff37;&#xff2d;进行转速调制。驱动逻辑如下&#xff1a; 参考代码&#xff1a; void MotoStart( uint32_t mode, uint32_t duty ) { if( mode MOTO_FORWARD ) { MotoWakeup(); Moto_S…

MySQL驱动表

文章目录 驱动表定义mysql关联查询的概念总结 驱动表定义 当进行多表连接查询时&#xff0c; [驱动表] 的定义为&#xff1a; 1&#xff09;指定了&#xff08;where查询&#xff09;条件时&#xff0c;满足查询条件的记录行数少的表为[驱动表] 如图一 2&#xff09;未指定&…

驱动笔记

1.系统开发相关的内容 uboot kernel rootfs 2.linux系统的划分 用户空间 内核空间 3.linux内核子系统 4.linux模块开发的特点 七大注意事项 5.加载函数&#xff0c;卸载函数 insmod/modprobe rmmod lsmod modinfo 6.编译模块 Makefile 7.模块信息 MODULE_LICENSE("G…