php抓取网页标签(萧萧python教学之Python3.7流程及教学方法汇总(一))
优采云 发布时间: 2022-03-15 14:07php抓取网页标签(萧萧python教学之Python3.7流程及教学方法汇总(一))
晓晓蟒蛇教学
1 环境
Windows7 x64
Python 3.7
2 过程
i) 配置相关库
ii) 抓取网页源代码信息
iii) 使用函数爬取特定标签中不同参数的文本
3 代码
3.1 配置相关库(请求和BS4)
进入
from urllib.request import urlopen #获取用于请求打开网页的库
from bs4 import BeautifulSoup #获取网页解析库
输出
导入爬虫相关库
3.2 爬取网页源代码
进入
html=urlopen("") #获取html结构和内容
bs0bj=BeautifulSoup(html) #提取名称信息
输出
爬取特定网页的结构和内容
BeautifulSoup从网页源码中爬取名字信息
评论
name 属性用于标识提交给服务器的表单数据,或者通过 JavaScript 在客户端引用表单数据。
只有设置了 name 属性的表单元素才能在提交表单时传递其值。
3.3 爬取特定标签中不同参数的文本
BeautifulSoup 中的 find() 和 findAll() 函数可以通过标签的不同属性找到想要的标签组或单个标签
标签
3.3.1 文本参数文本
进入
nameList=bs0bj.findAll(text="the Prince") #在网页中查找收录“王子”内容的标签
print(len(nameList)) #统计字符“王子”出现的次数
输出
在收录“王子”的网页上查找并打印标签
计算字符“王子”的出现次数
评论
text 使用标签的文本内容来匹配,而不是标签属性
len() 函数返回字符串的长度或项目数(当变量收录多个项目/元素时)
3.3.2 关键词参数关键字
进入
allText = bs0bj.findAll(id="text") #关键词参数关键字,可以选择指定属性的标签
打印(allText[0].get_text())
输出
打印网页的所有文本内容
评论
关键词参数关键字可以选择具有指定属性的标签
3.3.3标签参数标签
进入
tagList=bs0bj.findAll({"h1","h2"})#返回HTML文档h1标题标签的列表
打印(tagList[0].get_text())
输出
返回收录 HTML 文档中的 h1、h2 标题标签的列表
评论
标记参数标记可以传递一个或多个标记名称的 Python 列表作为标记参数
3.3.4个属性参数属性
进入
nameList=bs0bj.findAll("span",{"class":"green"}) #提取所有span标签下的绿色文字内容
for name in nameList: #注意for的用法:遍历列表中的所有名字
print(name.get_text()) #清除标签信息,打印字符名称列表
输出
使用 bs0bj.findAll(tagName, tagAttributes) 提取仅收录在
span> 标签中的文本,获取战争与和平角色名称列表
评论
bs0bj.tagName 只能获取页面中第一个指定的标签,而 bs0bj.findAll(tagName,
tagAttributes) 获取页面中所有指定的标签
name.get_text() 将清除 HTML 文档中的所有标签、超链接和段落,并返回一个没有标签的字符串
文本,因此通常在打印、存储和操作数据时最后使用。一般来说,HTML 文档的标记应该被保留
签名结构便于 BeautifulSoup 对象搜索。
注意 for 的用法:遍历列表中的所有名称
4 全文
代码全文如下:
################################################# #############################
# 爬虫
# 作者:莱诺克斯
# 数据:2019.09.30
# 许可证:BSD 3.0
################################################# #############################
# 配置相关库
from urllib.request import urlopen #获取请求打开网页的库
from bs4 import BeautifulSoup #获取网页解析库
# 抓取网页源代码信息
html=urlopen("")#获取html结构和内容
bs0bj=美汤(html)
# 爬取特定标签中不同参数的文本
#文本参数文本
nameList=bs0bj.findAll(text="the Prince")#在网页中查找收录“王子”内容的标签
print(len(nameList)) #统计字符“王子”出现的次数
# 关键词参数关键字
allText = bs0bj.findAll(id="text")#关键词参数关键字,可以选择指定属性的标签
打印(allText[0].get_text())
#标签参数标签
tagList=bs0bj.findAll({"h1","h2"})#返回HTML文档h1标题标签的列表
打印(tagList[0].get_text())
# 属性参数属性
nameList=bs0bj.findAll("span",{"class":"green"})#提取所有span标签下的绿色文字内容
for name in nameList: #注意for的用法,遍历列表中的所有名字
print(name.get_text()) #清除标签信息,打印字符名称列表