python简单爬虫:爬取并统计自己博客页面的信息(三)

python简单爬虫:爬取并统计自己博客页面的信息(二)中介绍了URL管理器和html下载器的简单实现,接下来介绍html解析器的简单实现。

9. html解析器(html_parser.py)
  • html解析器的主要任务是从下载好的网页中提取所需要的数据

  • 解析html的方法主要有两种:一是正则表达式,这是将整个html内容一个超大字符串来看待,匹配出所需数据;二是使用beautifulsoup4模块进行结构化解析,是将整个html的内容看作是DOM树来解析,本文使用的是第二种方法

  • 安装beautifulsoup4模块:pip install beautifulsoup4

  • 什么是DOM(Document Object Model)

    • 对浏览器中打开的任意网页快捷键F12,可以查看当前网页的html文档
    • 一个html文档是由很多个html元素构成的,遵循HTML标准
    • 简单来说,DOM将html文档表达为树结构,定义了访问和操作html文档的标准和接口,允许程序和脚本动态地访问和更新html文档的内容、结构和样式
    • 下面是一个简单的DOM树示图
      spider-DOM
  • 举个例子说明如何使用bs4来解析html文档:
# coding=utf-8
from bs4 import BeautifulSoup

html_cont = "\
<html>\
<head>This is an example</head>\
<body>\
<div class='test1'>test1</div>\
<div class='test2'>test2</div>\
<div class='test3'>test3</div>\
</body>\
</html>"

# 将html_cont变成一棵DOM树,创建一个bs实例
# 使用python自带的解析工具html.parser
# 编码为utf-8
soup = BeautifulSoup(html_cont, 'html.parser', from_encoding='utf-8')

print "---------(1)---------"
# 调用find函数查找soup实例中属性class='test1'的<div>标签,返回一个bs实例
# class_:不能使用class(python关键字)
node = soup.find('div', class_='test1')
print "node: %s"%str(node)
# 调用get_text()函数获取node的文本内容
node_cont = node.get_text()
print "node_cont: %s"%str(node_cont)

print "---------(2)---------"
body = soup.find('body')
# 调用find_all函数查找body实例中的所有<div>标签,返回一个list,list中的每一个元素都是一个bs实例
body_cont = body.find_all('div')
for i,div in enumerate(body_cont):
    print "%d-th div in <body>: %s"%(i, str(div))
  • 运行结果如下:
---------(1)---------
node: <div class="test1">test1</div>
node_cont: test1
---------(2)---------
0-th div in <body>: <div class="test1">test1</div>
1-th div in <body>: <div class="test2">test2</div>
2-th div in <body>: <div class="test3">test3</div>

今天暂时介绍到这里,接下来会介绍结果输出器和mysql模块的内容,并给出结果展示:python简单爬虫:爬取并统计自己博客页面的信息(四)

如果想看整个工程的代码,可以戳 github: spiderMyCsdn

谢谢大家~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值