Python爬虫实例(2)--beautifulsoup的应用

系列文章目录

我们上一讲已经学习了request的用法。

现在我们需要来处理得到的HTML信息。
本章节我们使用BeautifulSoup。漂亮的汤

耗时约15min,建议实操。

使用的网站延续前一讲。

这一小节我们的任务是得到网站上的基础信息,比如作者等。



前言

HTML的本质还是文本。那么对于python而言就是字符串。

所以从网页中提取信息,就变成了从字符串中提取子字符串。

但是又有什么不同呢?

  1. HTML的文本并不是线性的,而是树形的(DOM树)。

  2. HTML有很多标签属性等,这些和目标信息强相关。

    所以提取子字符串有其特定的方法

一、BeautifulSoup是什么?

beautifulsoup4库,也称为Beautiful Soup库或者bs4库,用于解析和处理HTML和XML。
名字有那么点恶趣味,但是功能还是很强大的。

pip install beautifulsoup4
import bs4
print bs4
# 最经常
from bs4 import BeautifulSoup

二、使用步骤

1.使用HTML数据构建soup

代码如下(示例):

soup = BeautifulSoup(html_text, 'html.parser')
print(soup.p.string) # 第一段的字符串内容
# 作    者:圣骑士的传说

这里用.去索引信息,是比较简单的情形,所以有缩写。。。
但是真正主力的是接下来的两个工具。

2.soup.find(‘tagName’)

:param name: A filter on tag name. 一般就是tag
:param attrs: A dictionary of filters on attribute values. 用于限定的属性
:param recursive: If this is True, find() will perform a
    recursive search of this PageElement's children. Otherwise, only the direct children will be considered.
:param limit: Stop looking after finding this many results. :kwargs: A dictionary of filters on attribute values.
:return: A PageElement.
:rtype: bs4.element.Tag | bs4.element.NavigableString

注意:
1. find的返回结果也是soup类型,所以可以迭代,一步步逼近目标。
2. recursive默认是FALSE,防止抓取到过多的信息。除非没什么干扰项
3. find只会返回自上而下找到的第一个。

3.soup.find_all()

爬虫大部分情况是在信息比较丰富的网页上批量的爬取数据。
所以find有很大的局限性。这个时候就需要find_all

和上面的find基本一致,除了返回的是一个列表之外。。。
见下面实操。


三、实操

为了避免反复爬取所以我们保存到文件中。

html_text = rep.text.encode('iso-8859-1').decode('gbk')

with open("shouye.txt","w",encoding="gbk") as outfile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

演技拉满的白马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值