python爬虫beautifulsoup实例-【Python实例二】BeautifulSoup爬虫简单实践

前言

前面安装了BeautifulSoup库,现在就来实现一下吧。

目录

一、Urllib库的使用

二、BeautifulSoup的使用

三、 一个示例

------------------------------------------------------------------------------------------------------------

正文

一、Urllib库的使用

看了一些简单爬虫的资料,都用到了Urllib库,想必这也是与web爬取数据的基础,因此先去看了看Urllib库的相关内容。

按我自己的理解,爬取网页的内容其实就是先把页面的信息先通过Urllib库抓取到本地,然后再通过BeautifulSoup库来精细划分抓取得到的页面内容数据。

使用Urllib库的最基本方法其实就三行代码(如下):

#-*- coding: utf-8 -*-

importurllib

res= urllib.urlopen("http://www.baidu.com")print res.read()

具体解释:

urllib库一般安装完Python后就自带在其安装包里面了,所以直接使用"import urllib"语句就能直接使用了;

urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。

(参数url表示远程数据的路径,一般是网址;参数data表示以post方式提交到url的数据)

urlopen()返回 一个类文件对象(此处用res来获取该对象),它提供了如下方法:read() , readline() , readlines() , fileno() , close()

res.read()返回获取到的网页内容

最后输出的内容如下所示(相当于查看网页源码看到的内容)

1100887-20170330101921045-565644351.png

二、BeautifulSoup的使用

在用Urllib库从网页上得到了网页数据后,就要开始使用BeautifulSoup了。

1. 首先创构造一个BeautifulSoup对象

下面有一些最简单的例子:

(1)通过字符串创建BeautifulSoup对象

#-*- coding: utf-8 -*-

from bs4 importBeautifulSoup

helloworld= '

Hello World

'soup_string= BeautifulSoup(helloworld, "html.parser")print soup_string

结果:

1100887-20170330102947858-2083739703.png

(2)通过类文件对象创建BeautifulSoup对象

#-*- coding: utf-8 -*-

importurllibfrom bs4 importBeautifulSoup

url= "http://www.baidu.com"page=urllib.urlopen(url)

soup= BeautifulSoup(page,"html.parser")print soup

因为前面说的Urllib库用urlopen()返回的就是一个类文件对象,所以这里的结果和之前Urllib中对象调用read()得到的结果是一样的。

(3)通过本地文件对象创建BeautifulSoup对象

#-*- coding: utf-8 -*-

importurllibfrom bs4 importBeautifulSoup

with open('index.html','r') as foo_file :

soup_foo= BeautifulSoup(foo_file, "html.parser")print soup_foo

【注意】以上的三种方法创建BeautifulSoup对象使用的语句是:BeautifulSoup(urllib库对象名, "html.parser"),其中标红的部分"html.parser"是我时间之后发现要加的,很多教程里面是直接使用 BeautifulSoup(urllib库对象名)来创建,但是我运行的时候会有一个warning:

1100887-20170330110042670-2108584702.png

于是就按照提示上说的,加上了"html.parser",运行之后果然正常了,所以如果你也遇到一样的问题,就还是加上它吧:)

2.使用BeautifulSoup库的 find()和findAll()函数

在构造好BeautifulSoup对象后,借助find()和findAll()这两个函数,可以通过标签的不同属性轻松地把繁多的html内容过滤为你所想要的。

这两个函数的使用很灵活,可以: 通过tag的id属性搜索标签、通过tag的class属性搜索标签、通过字典的形式搜索标签内容返回的为一个列表、通过正则表达式匹配搜索等等

基本使用格式:

pid = soup.find(attrs={"id":"aa"})

pid = soup.findAll('a',{'class':'sister'})

三. 一个示例

这个示例是我在查找资料的时候看到的,按照代码运行得出来,理解起来也简单,因此就借鉴一下

下面是代码和效果:

#-*- coding: utf-8 -*-

importurllibfrom bs4 importBeautifulSoup

res= urllib.urlopen("http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book")

soup= BeautifulSoup(res,"html.parser")

book_div= soup.find(attrs={"id":"book"})

book_a= book_div.findAll(attrs={"class":"title"})for book inbook_a:print book.string

1100887-20170330111050295-1321961732.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值