bs4解析——HTML语法
HTML(Hyper Text Markup Language)超⽂本标记语⾔, 是我们编写⽹⻚的最基本也是最核⼼的⼀种语⾔. 其语法规则就是⽤不同的标签对⽹⻚上的内容进⾏标记, 从⽽使⽹⻚显示出不同的展示效果
<h1>
哈哈哈
</h1>
上述代码的含义是在页面中显示"哈哈哈"三个字, 但是我爱你三个字 被"<h1>"和"</h1>"标记了, 这个时候,浏览器在展示的时候就会让“哈哈哈”变成 标题, 所以HTML的语法就是⽤类似这样的标签对页面内容进行标记, 不同的标签表现出来的效果也是不⼀样的
<body text="green" bgcolor="#eee">
哈哈哈
</body>
标签中还可以给出xxx=xxx这样的东西,通过xxx=xxx这种形式对h1标签进⼀步的说明了,这种语法在html中被称为标签的属性. 并且属性可以有很多个
HTML语法总结:
<标签 属性="值" 属性="值">
被标记的内容
</标签>
bs4模块的安装
pip install bs4
如果安装的速度慢, 建议更换国内源(推荐阿⾥源或者清华源)pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple bs4
bs4模块的使用
bs4在使用的时候就需要参照⼀些html的基本语法来进行使用
案例:抓取食品商务网果蔬价格:
https://price.21food.cn/guoshu/
第一步:拿到页面源代码
import requests
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)
print(resp.text)
第二步:将页面源代码丢给BeautifulSoup, 然后我们就可以通过bs对象去检索页面源代码中的html标签
import requests
from bs4 import BeautifulSoup
#拿到页面源代码
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)
#运用BeautifulSoup解析
page = BeautifulSoup(resp.text,features="html.parser")
table = page.find("div",class_="gs_top_t2")
print(table)
第三步:拿到所有数据
在HTML中,tr表示行,td表示列,想要获取所有的信息,可以先获得每一行的信息,再将每一行切片成每一列,这样就可以得到单一的元素
import requests
from bs4 import BeautifulSoup
#拿到页面源代码
url = "https://price.21food.cn/guoshu/"
resp = requests.get(url)
#运用BeautifulSoup解析
page = BeautifulSoup(resp.text,features="html.parser")
table = page.find("div",class_="gs_top_t2")
print(table)
#拿到所有数据
trs = table.find_all("tr")[1:]
for tr in trs:
tds = tr.find_all("td")
name = tds[0].text
low = tds[1].text
avg = tds[2].text
date = tds[3].text
print(name,low,avg,date)