美味的汤

美味的汤

导入的模块代码

 from bs4 import BeautifulSoup

beautifulsoup这个库的原理是通过匹配标签来找到自己想要的东西。基于网页上面的是HTML代码,所以说这样的方法是比正则表达式还要方便的

一般使用到这一个库是在写爬虫的时候,下面是一个写好的爬虫:

from bs4 import BeautifulSoup
import requests

url = 'http://www.baidu.com'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0'}
html = requests.get(url, headers=headers).text

# 遍历文档树   有两个参数,第一个是返回的HTML文本,第二个是搜索文档树的解释器:lxml  ,  和网页内置的html.parser
soup = BeautifulSoup(html, 'lxml')

# 搜索文档树           ,div后面的id属性使用,在标签前面加上# 号搜索  ,class后面的id属性用 . 搜索
print(soup.prettify)  # 标准化输出,这样更加美观
result = soup.find_all('div', attrs={'class': 's-news-list-wrapper c-container c-feed-box'})    # 这个方法使用的对象一定要是soup
print(result)  # 测试返回的是是否正确
# print(result[class][0])        # find_all函数找不到很有可能是标签的动态加载所致,可以尝试找其他的标签
respond = soup.find_all('img')
print(respond)


一些网站上面是禁止爬虫爬取数据的,在爬虫里尽可能地模拟一般用户访问,这样的话更加容易爬取到自己想要的数据。

美味的汤第一种常见的写法是根据标签来寻找,例如寻找img标签,就是在煲了美味的汤之后,使用标签作为一个方法:

soup.img.attrs #获取所有的属性和值,返回一个字典
soup.img.attrs['href'] 获取href的属性
soup.img['href']

标签里面是有一些子标签和属性的,剩下的也是可以匹配的

比较常用的是find方法和find_all方法,参数的话参考上面的代码。

1.select选择器的使用方法:

    根据选择器选择指定的内容
    常见的选择器:标签选择器,类选择器,ID选择器,组合选择器,层级选择器,伪类选择器,属性选择器
    传递给select()方法的选择器
soup.select('div')                   所有名为<div>的元素
soup.select('#author')               带有id属性为author的元素
soup.select('.notice')               所有使用CSS class 属性名为notice的元素
soup.select('div span')              所有在<div>元素之内的<span>元素
oup.select('div > span')            所有直接在<div>元素之内的<span>元素,中间没有其他元素
soup.select('input[name]')           所有名为<input>,并有一个name属性,其值无所谓的元素
soup.select('input[type="button"]')  所有名为<input>,并有一个type属性,其值为bottom的元素

下面是之前写的一份笔记内容:

beautifulsoup4

美丽的汤是一个可以从html或者xml文件中提取数据的python库,能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,更加方便。

使用美丽的汤解析一段html代码,能够得到一个beautifulsoup对象,并且能够按标准的缩进格式的结构输出。

使用的格式是:

from bs4 import beautifulsoup

soup = beautifulsoup(html_doc,‘html.parser’)

print(soup.prettify())

输出的结果就是整齐排列的html代码

安装美丽的汤:

命令行下执行:

pip install beautifulsoup4

或者

easy_install beautifulsoup4

出问题的话多半是Python的版本问题,重装就好了。

美丽的汤除了支持python标准库里面的html解释器外,还支持第三方的解释器,比如说lxml。

安装:

apt-get install python-lxml

easy_install lxml

pip install lxml

重要的是使用方法

将一段文档传入beautifulsoup的构造方法,就能得到一个文档的对象,可以传入一段字符串或一个文件句柄。

使用美丽的汤创建对象:

soup = beautifulsoup(html)

也可以直接用本地的html文件来创建对象:

soup = beatifulsoup(open(‘index.html’))

意思就是将本地的index。html文件打开用它创建soup对象。

格式化输出:

print soup.prettify()

beautifulsoup将复杂的html文档转换成复杂的树形结构,每个节点都是python的对象,所有的对像可以归纳为四种:

  1. tag
  2. navigableString
  3. beautifulsoup
  4. comment

tag 简单来说就是html里面的一个个标签,包括标签和标签里面包括的内容。

这样我们就可以使用soup加上标签名轻松地获取这些标签的内容了,比正则表达式还要简单,不过这样输出的只是第一个符合要求的标签,要查询所有的标签的话后面再学。

验证的对象的类型使用

print type(soup.title)

输出是:<class ‘bs4.element.tag’>

navigablestring提供了.string方法可以直接获取到上面使用tag属性得到的标签内的文字。

beautifulsoup对象表示的是一个文档的全部内容,大部分时候,可以把它当做tag对象,是一个特殊的tag,我们可以获取它的类型,名称和属性

comment对象是一个特殊类型的navigablestring对象,其实输出的是内容仍然不包括注释符号,但是如果不好好处理它的话,可能会对我们的文本处理造成意想不到的麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值