码迷,mamicode.com
首页 > Web开发 > 详细

爬虫学习——网页解析器Beautiful Soup

时间:2017-07-08 00:27:09      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:匹配   输入   名称   ext   htm   官方   rom   情况   模块   

一.Beautiful Soup的安装与测试

官方网站:https://www.crummy.com/software/BeautifulSoup/

技术分享

  Beautiful Soup安装与使用文档:  https://www.crummy.com/software/BeautifulSoup/bs4/doc/

1.首先测试一下bs4模块是否已经存在,若不存在再安装即可,我用的是kali测试发现bs4模块已经存在,下面介绍如何测试与安装

新建python文档输入以下代码

1 import bs4
2 print bs4

显示一下结果即说明bs4模块已经存在,其他情况则需要安装

技术分享

安装代码如下

1 sudo apt-get  install python-pip2 
3 sudo pip install beautifulsoup4 

之后再进行测试即可

就会显示出来这时就说明 Beautiful Soup

 

 安装已经完成

二、Beautiful Soup的语法

技术分享

find_all:搜索出满足要求的所有节点

find:搜索出满足要求的第一个节点

二者的参数是一样的

2.按照节点名称、属性值、文字进行的搜索

技术分享

 

3.创建Beautiful Soup对象相应的代码

 1 from bs4 import BeautifulSoup
 2 
 3 #根据HTML网页字符串创建BreautifulSoup对象
 4 soup = BeautifulSoup(
 5         html_doc,                          #HTML文档字符串   
 6         html.parser                      #HTML解析器
 7         from_encoding=utf-8         #HTML文档的编码
 8         )

4.搜索节点(find_all,find)

find_all(name节点名称,attrs节点属性,string节点文字)

 

 1 # 方法:find_all(name,attrs,string)
 2 
 3 #查找所有标签为a的节点
 4 soup.find_all(a)
 5 
 6 #查找所有标签为a,链接符合/view/123.html形式的节点
 7 soup.find_all(a,href=/view/123.html)
 8 soup.find_all(a,href=re.compile(r/view/\d+\.htm))    #bs中可以在find方法中的名称和属性上使用正则表达式来匹配对应的内容
 9 
10 #查找所有标签为div,class为abc,文字为python的节点
11 soup.find_all(div,class_=abc,string=python)

 

5.得到节点后访问节点信息


 1 #假如得到节点:<a href=‘1.html‘>python</a>
 2
 3 #获取查找到的a节点的href属性
 4 node.name
 5 
 6 #获取查找到的a节点的href属性,以字典的形式访问到a节点所有的属性  
 7  node[href]
 8
 9 #获取查找到的a节点的链接文字
10 node.get_text()

通过以上创建bs4对象,搜索DOM树,访问节点的内容,就可以实现对整个下载好的网页

所有节点的解析和访问。下一篇博文将给一个完整的示例代码

 

爬虫学习——网页解析器Beautiful Soup

标签:匹配   输入   名称   ext   htm   官方   rom   情况   模块   

原文地址:http://www.cnblogs.com/ryuuku/p/7134492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!