爬虫day2

bs4解析-HTML语法

bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简单和清晰.
HTML(Hyper Text Markup Language)超文本标记语言,是我们编写网页的最基本也是最核心的一种语言.其语法规则就是用不同的标签对网页上的内容进行标记,从而使网页显示出不同的展示效果
<h1>
        我爱你
</h1>
上述代码的含义是在页面中显示“我爱你"三个字,但是我爱你三个字被"<h1>"和"</h1>"标记了.白话就是被括起来了被H1这个标签括起来了,这个时候,浏览器在展示的时候就会让我爱你变粗变大,俗称标题,所以HTML的语法就是用类似这样的标签对页面内容进行标记,不同的标签表现出来的效果也是不一样的.
h1一级标题
h2:二级标题
p:段落
font:字体(被废弃了,但能用)
body:主体

比如:

<h1>i love you</h1>
<h1 align="center'>i don't love you</h1>
# h1: 标签
# align:属性
# center:属性值

<标签 属性=“属性值">被标记的内容</标签>
<标签:/>

<imgsrc=''xxx.jpg"/>
<br />
<a href="http://www.baidu.com">周杰伦</a>

总结,

html语法:
<标签     属性="值”   属性="值">

          被标记的内容

</标签>

有了这些知识,我们再去看bs4就会得心应手了.因为bs4就是通过标签和属性去定位页面上的内容的.

<div id="1'class="h1">周杰伦</div>
<div id="2"class="h1">林俊杰</div>
<div id="3"class='h1'>麻花藤</div>
<div id="4"class='h1">天老鸭</div>
<div id="5"class="h4">李多海</div>
<div id="5"class="h5">厉害多</div>
<span>xxxxx</span>

# 通过标签名称来拿到数据

# div -> id:3 => 麻花藤

#div-> class:h4=> 李多海

bs4

安装

pip install beautifulsoup4

Beautiful soup 简介
Beautiful Soup 是一个用于从 HTML和 XML 文件中提取数据的 Python 模块。Beautiful Soup 提供一些简单的函数用来处理导航、搜索、修改分析树等功能。Beautiful Soup 模块中的查找提取功能非常强大,而且非常便捷。Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换为 UTF-8 编码。

使用:

 

Tag 通俗点讲就是 HTML 中的一个个标签。

<html>
<head)
        <title>百度</title>
</head>
<body>
        <a class="item" href="https://www. baidu. com" id="baidu">百度</a>
        <p class="story"><b〉百度一下,你就知道</b></p>
        <p class="introduce”>全球最大的中文搜索引擎、致力于让网民更便捷地获取</p>
</body>
</html>

上面的 head、title、body、a和p等HTML标签,以及里面包括的内容都是 Tag。

使用 Beautiful soup 获取节点对应的代码:

#创建一个BeautifulSoup对象,获取页面正文
soup = BeautifulSoup(html_doc, features='lxml’)
print('head节点内容为:\n',soup.head)# 打印head节点
print('title节点内容为:\n',soup.title) # 打印title节点
print('body节点内容为\:n',soup.body) # 打印body节点
print('a节点内容为:\n',soup.a) # 打印a节点
print('p节点内容为:\n’,soup.p) # 打印p节点

使用 Beautiful soup 获取节点名称:

除了通过指定节点名称的方式获取节点内容以外,还可以使用name属性获取节点的名称。关键代码如下:

print(soup.head.name)  #  打印head节点名称
print(soup.title.name)  # 打印title节点名称 
print(soup.body.name) # 打印body节点名称
print(soup.a.name)  # 打印a节点名称
print(soup.p.name) # 打印p节点名称

使用 Beautiful soup 获取节点属性:

调用 attrs 属性即可获取这个节点下的所有属性。关键代码如下:

print('a节点中属性',soup.a.attrs)  #打印a节点属性
print('p节点中属性',soup.p.attrs)  #打印p节点属性

使用 Beautiful soup 获取节点属性:

attrs 的返回结果为字典类型,字典中的元素分别是属性名称与对应的值。所以在 attrs后面添加0括号并在括号内添加属性名称即可获取指定属性对应的值。关键代码如下:

print('a节点中id属性对应的值',soup.a.attrs['id’]) # 打印a节点中id属性对应的值
print('p节点中class属性对应的值',soup.p.attrs['class’])#打印p节点中class属性对应的值

Beautiilsoup对象表示的是一个文档的内容。大部分时候,可以把它当作 Tag对象,是一个特殊的 Tag,我们可以分别获取它的类型、名称以及属性。关键代码如下:

print(type(soup)) #打印数据类型
print(soup.name)  #打印名称
print(soup.attrs) #打印属性

Comment对象是一个特殊类型的 NavigableString对象,其输出的内容不包括注释符号.

from bs4 import BeautifulSoup #导BeautifulSoup库


#创建模拟HTML代码的字符串
html_doc =’<b><!--百度一下,你就知道--></b>
#创建一个BeautifulSoup对象,获取页面正文
soup = BeautifulSoup(html_doc, features=’lxml’)
comment=soup.b.string   #获取b节点所包含的文本内容
print(comment)    #打印b节点所包含的文本内容
print(type(comment))   #打印数据类型

实例:

import requests
from bs4 import BeautifulSoup
import csv


url ="http://www,xinfadi,com.cn/marketanalysis/0/list/1.shtml"
resp = requests.get(url)


f = open("菜价.csv", mode="w")
csvwriter = csv.writer(f)


# 解析数据
# 1.把页面源代码交给BeautifulSoup进行处理,生成bs对象

page = BeautifulSoup(resp.text,"html.parser")     # 指定html解析器

# 2.从bs对象中查找数据
# find(标签,属性=值),返回一个
# find _all(标签,属性-值),返回一堆
# table = page.find("table", class_="hq_table")  #class是python的关键字
table = page.find("table", attrs={"class": "hq_table"})  # 和上一行是一个意思
#拿到所有数据行
trs = table.find_all("tr")[1:]
for tr in trs:   # 每一行
    tds = tr.find_all("td")   # 拿到每行中的所有td
    name = tds[0].text  # .text 表示拿到被标签标记的内容
    low = tds[1].text  # .text 表示拿到被标签标记的内容
    avg = tds[2].text  # .text 表示拿到被标签标记的内容
    high = tds[3].text  # .text 表示拿到被标签标记的内容
    gui = tds[4].text  # .text 表示拿到被标签标记的内容
    kind = tds[5].text  # .text 表示拿到被标签标记的内容
    date = tds[6].text  # .text 表示拿到被标签标记的内容
print(name,low,avg,high,gui,kind,date)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷是一个提供在线教育的学习平台,他们提供了Python爬虫的相关教学课程。通过学习这些课程,你可以获得Python基础知识、前端基础知识、计算机网络基础以及爬虫原理等方面的知识。Python基础教学可以参考B站尚硅谷的教学视频,这些视频可以帮助你建立起对Python的基本认识。而前端基础知识包括HTML、CSS和JavaScript的学习,它们分别代表网页的骨架、肌肉和皮肤,只有结合起来才能形成一个完整的网页。此外,你还可以通过学习计算机网络基础来理解HTTP和HTTPS、URL以及网页请求等内容。爬虫原理也是其中的一部分内容,它可以帮助你了解如何通过爬虫程序获取网页数据。所以,如果你对Python爬虫感兴趣,尚硅谷提供的Python爬虫课程可能是一个不错的选择。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [零基础自学python爬虫笔记Day1——爬虫的基本原理](https://blog.csdn.net/Seyhang/article/details/119420052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Python爬虫】urllib库——尚硅谷](https://blog.csdn.net/qq_48108092/article/details/126097408)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值