Beautiful Soup概述(简称bs4 )。
一种可以从HTML或XML文件中提取数据的Python库,可以使用喜爱的转换器导航、搜索和修改常规文档,从而节省时间
所有对象可以归纳为四种。
Tag :标签对象,例如
yoyoketang
这是标签中的NavigableString。 文字对象,例如这里是我的微信公众号: yoyoketagn
beautiful soup :整个html对象
Comment :评论对象,例如! -- for HTML5 --,那其实是特殊的NavigableString
安装pip install beautifulsoup4
1 .从标签的名称中获取tag对象。 如果有多个相同的标记名称,则会返回第一个soup.head
2、获取标签的文字文本,soup.head.title.string
3、tag.attrs可以打印所有属性并恢复为词典格式。 获取其中的某个属性,与操作词典一样,例如tag.attrs['href']或tag['href'],由于class属性一般是多个,中间有间隔,所以class属性
4、查找元素,find_all查找符合所有请求的内容,并返回一个list对象
5、get_text ) )获取tag标签下的所有文本
6、replace替换字符串中的特殊字符
练习1
from bs4 import BeautifulSoup
htmldemo=" ' '
yoyoketang yoyoketang
这里是我的微信公众号。 yoyoketang
lafiddler教程
电脑笔记本
selenium文档
快点关注吧!
.
“”'
#html.parser是解析器
soup=beautifulsoup(htmldemo,' html.parser ' ) )。
获取#标签头
打印(soup.head ) )。
获取#字符
打印(soup.head.title.string ) )。
打印(soup.a.attrs ) )。
print(soup.a.attrs['href']
print(soup.a['href']
#class搜索无法直接使用class进行搜索。 class_='sister '
s=soup.find_all(class_='sister ' ) )。
#第二次搜索
S2=s[0].find_all(id='p ' ) )。
按#id搜索
m=soup.find_all(id='link3' ) ) )。
获取#标记下的所有文本
t=soup.body.get_text (
练习2
from bs4 import BeautifulSoup
导入请求
import os
#请求获取所有图像url和title的图像地址
r=requests.get (http://699 pic.com/sousuo-218808-13-1.html ) ) ) ) )。
soup=beautifulsoup(r.content,' html.parser ' ) )。
images=soup.find _ all (class _=' lazy ' ) ) )。
curpath=OS.path.dirname (OS.path.realpath (_ _ file _ _ ) )
for i in images:
jpg_url=i['data-original']
title=i['title']
打印(jpg _ URL ) )
是打印(标题)
打印(' )。
#下载获取的图像,下载到curpath、名字title.jpg
withopen(Curpath(((Title ).jpg )、(wb ) ) as f:
f.write(requests.get ) jpg _ URL (.content ) )。