我是靠谱客的博主 开心小甜瓜,最近开发中收集的这篇文章主要介绍【网页爬虫】BeautifulSoup4模块介绍1、BeautifulSoup4基础介绍2、BeautifulSoup4处理标签方法3、正则表达式4、其它,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
- 1、BeautifulSoup4基础介绍
- - 使用pip安装BeautifulSoup4
- - 导入BeautifulSoup4模块
- - 创建BeautifulSoup.bs4对象
- - 查找bs4对象
- 2、BeautifulSoup4处理标签方法
- - 处理子标签与后代标签
- - 处理兄弟标签
- - 处理父标签
- 3、正则表达式
- - 正则表达式常用符号
- - 用正则表达式找图片
- 4、其它
- - 获取属性字典
- - Lambda表达式
1、BeautifulSoup4基础介绍
- 使用pip安装BeautifulSoup4
pip install BeautifulSoup4
- 导入BeautifulSoup4模块
import bs4
- 创建BeautifulSoup.bs4对象
# 引入urllib.request模块
import urllib.request
# html.read()为urllib.request.urlopen()方法得到的字节对象,也可采用其他方法
html = urllib.request.urlopen("http://pythonscraping.com/pages/page1.html")
# 解析器采用python标准库:"html.parser",也可以采用其他库(需安装)
soup=bs4.BeautifulSoup(html.read(),"html.parser")
- 查找bs4对象
# 方法一:直接在bs4对象后跟对应的标签名,可以多级,结果相同
print(soup.h1)
print(soup.html.h1)
print(soup.html.body.h1)
# 方法二:使用find方法查找,返回类型为bs4.element.Tag
name=soup.find("span",{"class":"red"})
print(name)
print(type(name))
# 使用get_text()方法去掉标签
print(name.get_text())
# 方法三:使用findAll方法查找(返回列表<class 'bs4.element.ResultSet'>)
nameList = soup.findAll("span", {"class":"green"})
print(type(nameList))
for name in nameList:
# print(name)
print(type(name))
print(name.get_text())
2、BeautifulSoup4处理标签方法
- 处理子标签与后代标签
# 打印出table下的内容,仅孩子
for child in soup.find("table",{"id":"giftList"}).children:
print(child)
# 迭代打印出table下的内容,即后代
for child in soup.find("table",{"id":"giftList"}).descendants:
print(child)
- 处理兄弟标签
# 打印出tr往后的第一个兄弟标签(本身除外)
for child in soup.find("table",{"id":"giftList"}).tr.next_sibling:
print(child)
# 打印出tr往后的所有兄弟标签(本身除外)
for child in soup.find("table",{"id":"giftList"}).tr.next_siblings:
print(child)
# 打印出tr往前的第一个兄弟标签(本身除外)
for child in soup.find("table",{"id":"giftList"}).tr.previous_sibling:
print(child)
# 打印出tr往前的所有兄弟标签(本身除外)
for child in soup.find("table",{"id":"giftList"}).tr.previous_siblings:
print(child)
- 处理父标签
# .parent获取父标签,.previous_sibling获取前一个兄弟便签,如此可以获取表格同行的其它信息
print(soup.find("img",{"src":"../img/gifts/img1.jpg"}).parent.previous_sibling.get_text())
3、正则表达式
- 正则表达式常用符号
- 用正则表达式找图片
# 正则表达式可以直接与BeautifulSoup4结合使用,如下找出一定路径下的图片
images=soup.findAll("img",{"src":re.compile("../img/gifts/img.*.jpg")})
for image in images:
print(image)
4、其它
- 获取属性字典
images=soup.findAll("img",{"src":re.compile("../img/gifts/img.*.jpg")})
for image in images:
print(type(image))
# 获取属性字典,{属性:属性值}
print(type(image.attrs))
# 效果相同,获取src属性值
print(image["src"])
print(image.attrs["src"])
- Lambda表达式
# 返回有两个属性的标签
print(soup.findAll(lambda tag: len(tag.attrs) == 2))
最后
以上就是开心小甜瓜为你收集整理的【网页爬虫】BeautifulSoup4模块介绍1、BeautifulSoup4基础介绍2、BeautifulSoup4处理标签方法3、正则表达式4、其它的全部内容,希望文章能够帮你解决【网页爬虫】BeautifulSoup4模块介绍1、BeautifulSoup4基础介绍2、BeautifulSoup4处理标签方法3、正则表达式4、其它所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复