python爬虫之BeautifulSoup

Beautiful Soup,字面意思是美好的汤,是一个用于解析HTML文件的Python库

windows下载和安装

在Windows下面如何安装Beautiful Soup:

1.到http://www.crummy.com/software/BeautifulSoup/网站上上下载

2.下载完成之后需要解压缩,假设放到D:/python下。

3.运行cmd,切换到D:/python/beautifulsoup4-4.1.3/目录下(根据自己解压缩后的目录和下载的版本号修改),

cd /d D:/python/beautifulsoup4-4.1.3

4.运行命令:

setup.py build

setup.py install

5.在IDE下from bs4 import BeautifulSoup,没有报错说明安装成功。

装汤——Making the Soup

首先要把待解析的HTML装入BeautifulSoup。BeautifulSoup可以接受文件句柄或是字符串作为输入:

方式一:from bs4 import BeautifulSoup
fp = open("index.html")
soup1 = BeautifulSoup(fp)
#soup2 = BeautifulSoup("<html>data</html>")
方式二:html = """<html><head><title>The Dormouse‘s story</title></head><body><p class="title" name="dromouse"><b>The Dormouse‘s story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;and they lived at the bottom of a well.</p><p class="story">...</p>"""
soup = BeautifulSoup(html)
soup = BeautifulSoup(html)print soup.prettify()

这里字符串用三个引号(单引号,双引号)代表保留字符串里原有的格式。

三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的

汤料——Soup中的对象

这里有四个对象tag,NavigableString(用来输出标签里的文字部分)

,

(1)Tag

<html><head><title>The Dormouse‘s story</title></head>
<p class="title" name="dromouse"><b>The Dormouse‘s story</b></p>
<a href="http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
这里的head,title,p,a都是标签tag
print soup.p ,‘\n‘,soup.a ,‘\n‘,soup.head,‘\n‘, soup.title,‘\n‘

输出结果:

<p class="title" name="dromouse"><b>The Dormouse‘s story</b></p>
<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>
<head><title>The Dormouse‘s story</title></head>
<title>The Dormouse‘s story</title>

我们可以利用 soup加标签名轻松地获取这些标签的内容,是不是感觉比正则表达式方便多了?不过有一点是,它查找的是在所有内容中的第一个符合要求的标签

我们可以验证一下这些对象的类型

print ‘\n‘,type(soup.a),‘\n‘,type(soup.p)

输出结果:

<class ‘bs4.element.Tag‘>
<class ‘bs4.element.Tag‘>

对于 Tag,它有两个重要的属性,是 name 和 attrs,

soup 对象本身比较特殊,它的 name 即为 [document],对于其他内部标签,输出的值便为标签本身的名称。

print soup.nameprint soup.p.name,soup.head.name

输出结果:

[document]
p head

attr:

print soup.p[‘name‘]输出标签p里的属性name的值

(2)NavigableString

print soup.p.string
输出结果:

The Dormouse‘s story

(3)BeautifulSoup

BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性

(4)Comment

Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容仍然不包括注释符号

比如标签a<a class="sister" href="http://example.com/elsie" id="link1"><!-- Elsie --></a>

这里就包括了注释符号<!-- -->

a 标签里的内容实际上是注释,但是如果我们利用 .string 来输出它的内容,我们发现它已经把注释符号去掉了,所以这可能会给我们带来不必要的麻烦。

另外我们打印输出下它的类型,发现它是一个 Comment 类型,所以,我们在使用前最好做一下判断,判断代码如下

if type(soup.a.string)==bs4.element.Comment:

print soup.a.string

上面的代码中,我们首先判断了它的类型,是否为 Comment 类型,然后再进行其他操作,如打印输出。

未完待续~

时间: 2024-10-15 21:57:36

python爬虫之BeautifulSoup的相关文章

Python 爬虫—— requests BeautifulSoup

本文记录下用来爬虫主要使用的两个库.第一个是requests,用这个库能很方便的下载网页,不用标准库里面各种urllib:第二个BeautifulSoup用来解析网页,不然自己用正则的话很烦. requests使用,1直接使用库内提供的get.post等函数,在比简单的情况下使用,2利用session,session能保存cookiees信息,方便的自定义request header,可以进行登陆操作. BeautifulSoup使用,先将requests得到的html生成BeautifulSo

Python爬虫之Beautifulsoup模块的使用

一 Beautifulsoup模块介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.你可能在寻找 Beautiful Soup3 的文档,Beautiful Soup 3 目前已经停止开发,官网推荐在现在的项目中使用Beautiful Soup 4, 移植到BS4 #安装 Beautiful Soup pip instal

python 爬虫 requests+BeautifulSoup 爬取巨潮资讯公司概况代码实例

第一次写一个算是比较完整的爬虫,自我感觉极差啊,代码low,效率差,也没有保存到本地文件或者数据库,强行使用了一波多线程导致数据顺序发生了变化... 贴在这里,引以为戒吧. # -*- coding: utf-8 -*- """ Created on Wed Jul 18 21:41:34 2018 @author: brave-man blog: http://www.cnblogs.com/zrmw/ """ import requests

python 爬虫proxy,BeautifulSoup+requests+mysql 爬取样例

实现思路: 由于反扒机制,所以需要做代理切换,去爬取,内容通过BeautifulSoup去解析,最后入mysql库 1.在西刺免费代理网获取代理ip,并自我检测是否可用 2.根据获取的可用代理ip去发送requests模块的请求,带上代理 3.内容入库 注:日志模块在上一篇随笔 下面附上代码 1.可用代理获取 # -*- coding: utf-8 -*- import random import time import requests from bs4 import BeautifulSou

Python爬虫之BeautifulSoup模块

模块安装 pip3 install beautifulsoup4 模块导入 from bs4 import BeautifulSoup 示例html内容 获取html内容代码 import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36

Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释

这篇文章主要介绍了Pythont特殊语法filter,map,reduce,apply使用方法,需要的朋友可以参考下(1)lambda lambda是Python中一个很有用的语法,它允许你快速定义单行最小函数.类似于C语言中的宏,可以用在任何需要函数的地方. 基本语法如下: 函数名 = lambda args1,args2,…,argsn : expression 例如: add = lambda x,y : x + yprint add(1,2) (2)filter filter函数相当于一

转python爬虫:BeautifulSoup 使用select方法详解

1 html = """ 2 <html><head><title>The Dormouse's story</title></head> 3 <body> 4 <p class="title" name="dromouse"><b>The Dormouse's story</b></p> 5 <p class=

python爬虫:BeautifulSoup 使用select方法详解

1 html = """ 2 <html><head><title>The Dormouse's story</title></head> 3 <body> 4 <p class="title" name="dromouse"><b>The Dormouse's story</b></p> 5 <p class=

python爬虫:使用urllib.request和BeautifulSoup抓取新浪新闻标题、链接和主要内容

案例一 抓取对象: 新浪国内新闻(http://news.sina.com.cn/china/),该列表中的标题名称.时间.链接. 完整代码: from bs4 import BeautifulSoup import requests url = 'http://news.sina.com.cn/china/' web_data = requests.get(url) web_data.encoding = 'utf-8' soup = BeautifulSoup(web_data.text,'