我们之前已经用Xpath分析过了古诗文网,但还是感觉有点麻烦,所以今天来讲BeautifulSoup库,它可以很方便的帮我们抓取网页的数据,同样也支持lxml解析器,下面我们来详细介绍:

安装BeautifulSoup库:

pip install beautifulsoup4

导入BeautifulSoup库:

import bs4    # 导入BeautifulSoup整个库
from bs4 import BeautifulSoup        # 解析HTML
from bs4 import BeautifulStoneSoup   # 解析XML

我们首先来创建一个BeautifulSoup对象:

from bs4 import BeautifulSoup
import requestsurl = 'https://so.gushiwen.org/authors/authorvsw_b90660e3e492A1.aspx'
result = requests.get(url)
html = result.text
bs = BeautifulSoup(html,'lxml')    # 创建BeautifulSoup对象# BeautifulSoup(解析对象[,解析器][,from_encoding=...])
# 注意,默认使用的是python自带的‘html.parse’解析器,但是官方推荐使用‘lxml’,使用之前需要安装lxml,但是不需要导入库到项目

牛刀小试,先来感受一下:

from bs4 import BeautifulSoup
import requestsurl = 'https://so.gushiwen.org/authors/authorvsw_b90660e3e492A1.aspx'
result = requests.get(url)
html = result.text
bs = BeautifulSoup(html,'lxml')print(bs.title)                # title标签的全部内容
print(bs.title.name)           # 标签的名字
print(bs.title.string)         # 标签里面的内容
print(bs.title.get_text())     # 惊奇的发现跟string的作用一样,那么他们有什么区别呢?# 我们下面在详细说明# 输出结果:
# <title>
# 李白的诗词全集_诗集、词集(1180首全)_古诗文网
# </title>
# title
#
# 李白的诗词全集_诗集、词集(1180首全)_古诗文网
#
#
# 李白的诗词全集_诗集、词集(1180首全)_古诗文网
#
# 

我们发现,可以通过 bs.标签 来获取标签的内容,但是如果有多个同名的标签的话,就只能返回第一个了,所以这种提取数据的方法不深究,直接上方法,直接向XPath那样来匹配文本:

sons = bs.find_all('div',class_='sons')
for son in sons:name = son.find('b').stringprint(name)author = son.find('a',href='/authorv_b90660e3e492.aspx').stringprint(author)content = son.find('div',class_='contson').get_text().strip()print(content)

上面这段代码已经完成了古文题目、作者和诗文内容的提取,是不是非常的简单,这一小段代码已经包含了我们常见的用法,下面我们一个一个来分析:

  1. find_all() 和 find() 两个方法的区别:

    我们通过方法的原型定义,发现 find() 这个方法非常不要脸的直接调用了 find_all(),当找到一个数据之后就直接返回了,而 find_all()不断递归调用,直到找到最后一个,所以这两个方法的用法是一样的,参数几乎一模一样,现在大家知道了他们的区别了;
    我们看一下他的用法:,第一个‘div’是标签,第二个class_='sons'(注意这里是class_,这个是BeautifulSoup定义的关键字,不然会和python关键字产生冲突)class_是属性的名字,‘sons’是他的值;
  2. string和get_text()有什么区别:


    由此我们可以知道,string获得的是标签内的单个字符串,如果不是单个字符串返回的就是None,所以我们要使用get_text()获取所有字符串;总结:get_text()获取的范围更大,get_text()可代替string:


ok,我们最后上源码,BeautifulSoup就先讲到这里,后面有需要再继续补充:

from bs4 import BeautifulSoup
import requestsurl = 'https://so.gushiwen.org/authors/authorvsw_b90660e3e492A1.aspx'
result = requests.get(url)
html = result.text
bs = BeautifulSoup(html,'lxml')sons = bs.find_all('div',class_='sons')
for son in sons:name = son.find('b').get_text()print(name)author = son.find('a',href='/authorv_b90660e3e492.aspx').get_text()print(author)content = son.find('div',class_='contson').get_text().strip()print(content)

Python3爬虫——用BeautifulSoup解析古诗文网相关推荐

  1. Python-爬虫(爬虫练习 爬取古诗文网五言绝句)

    目标网站 采用的数据解析方式:xpath.bs4.re正则 获取网站中所有的五言绝句诗词链接 from bs4 import BeautifulSoup import re# 获取五言绝句代码链接,以 ...

  2. 第一个简单Python爬虫:抓取古诗文网中李白的诗歌

    2018年10月11日  这是第一个博客,嘻嘻~~~~ 最近老师给了个任务:爬取诗歌.于是乎,走上了爬虫道路,爬取了李白的诗歌. 感谢代码的原作者(唐诗三百首,源代码). 遇到的问题与收获: 1.熟悉 ...

  3. 03-数据解析_正则表达式(03 【实战】古诗文网爬虫)

    目标:爬取中国古诗文网的诗词 注意: 用正则的思路不一样:不存在树结构,在正则眼里只当作'str' 关注zip的用法 中国古诗文网网页示例:   1.xpath方法 # -*- coding: utf ...

  4. Python爬虫实战(3)古诗文网

    Python爬虫实战(3)古诗文网 网页分析 代码 注意事项 输出结果 利用BeautifulSoup和和requests库实现古诗文网的古诗抓取 运行平台: Windows Python版本: Py ...

  5. 爬虫初级二(爬中国古诗文网)

    爬虫初级二(爬中国古诗文网) 第一步先分析要爬取网站的网址 为什么要先分析网址呢?通过网址我们可以知道此网页页面是异步请求(post)还是同步请求(get) get请求:最常见的HTTP请求方式,普通 ...

  6. Python爬虫(一)——爬取古诗文网,初识什么是爬虫

    首先来说下什么是爬虫,按照百度百科的说法是:是一种按照一定规则,自动抓取万维网信息的程序或者脚本:首先它是程序,需要我们定义好规则,然后程序就会按照定义好的规则抓取网络上的信息,数据抓取下来了之后,需 ...

  7. 21天打造分布式爬虫-中国天气网和古诗文网实战(四)

    4.1.中国天气网 网址:http://www.weather.com.cn/textFC/hb.shtml 解析:BeautifulSoup4 爬取所有城市的最低天气 import requests ...

  8. python爬虫----DAY4-1-----验证码识别实战---识别古诗文网

    python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...

  9. python爬虫-古诗文网验证码识别

    文章目录 一.前期准备 二.示例代码 一.前期准备 古诗文网验证码识别,是通过对古诗文网登陆界面的验证码图片进行识别的,利用专门的验证码识别网站,可以提取验证码图片中的验证码 网站推荐:超级鹰 注册登 ...

最新文章

  1. html选择按钮selected,HTML Option defaultSelected用法及代码示例
  2. 更换yum的源为阿里云或者网易
  3. 常考数据结构与算法:数组中未出现的最小正整数
  4. wxWidgets随笔(7)-utf8中文(3)
  5. linux接口 头文件,第一种:1、添加关键头文件:#include linux/of_gpio.h#include linux/gpio.h...
  6. python进阶-Python 进阶用法 (持续更新)
  7. HTTP协议 (二) 基本认证
  8. linux dns函数,Linux DNS (1)的基本概念
  9. StanfordDB class自学笔记 (15) Recursion
  10. AxGlyph矢量绘图软件 | 绘图软件
  11. Android程序员简历
  12. CSDN去除图片水印
  13. 1000句英语经典口语(3)
  14. 薪酬缩水,“裸辞”奋战25天三面美团,交叉面却被吊打,我太难了
  15. Unity 颜色板|调色板|无级变色功能
  16. xshell4连接ubuntu,报错No matching outgoing encryption
  17. (干货)各大AI竞赛 Top 解决方案开源汇总+大牛经验(Kaggle,Ali,Tencent、JD、KDD Cup...)
  18. iOS Mac小白必备的基本操作
  19. IE8中的可访问性功能(一):光标浏览
  20. ASP.net 仿QQ弹出窗口

热门文章

  1. 逍遥情缘服务器维护没通告,【维护公告】2月2日中午12:00维护公告
  2. 粉刺黑头实际上就是黑头粉刺,是粉刺的一种类型,挤出后形如小虫,表面发黑。下面给大家带来除粉刺黑头的偏方,希望对大家有所帮助。
  3. 10 张令人泪牛满面的程序员趣图
  4. mpv播放器键盘快捷键
  5. 来广州找工作有一个多月了,今天终于有着落了,工资7000
  6. crmsh配置pacemaker集群时报错 CIB not supported: validator 'pacemaker-2.5'
  7. 2022年天梯赛题目记录
  8. 一步一步学linux操作系统: 14 进程调度三完_抢占式调度
  9. 数学建模之MATLAB编程
  10. 纽约出租车旅途时间建模分析