Python爬虫练习(2)——我的学习笔记

2018-09-18  本文已影响0人  DN_98

通过requests模块的get方法成功获得网页内容后,接下来就要对网页内容进行解析,以便快速定位到所要抓取的数据。

import requests

response=requests.get('http://douban.com')

print(response.text)

如何对response.text的内容进行解析呢,我用了BeautifulSoup这个模块。

首先我导入这个模块

from bs4 import BeautifulSoup

然后,还是老办法用dir(BeautifulSoup)这个内建函数看看BeautifulSoup有哪些东东。

看来东西还不少啊,有时间要一个一个地研究一下,在这里,首先要创建BeautifulSoup的对象。

看看“__init”这个方法里面怎么写的,输入help(BeautifulSoup.__init__)

看介绍,通过以下代码,就应该可以成功获得了response.text用BeautifulSoup解析后得到的对象

soup = BeautifulSoup(response.text)

然而,出错了

系统提示,应该是需要你显示地指定解析器,用来解析你提供的文档,也就是我们传入的response.text,那就根据系统提示进行修改,修改之后就没有错误了,注意了,这里我已经事先安装了“lxml”这个模块,没有安装这个模块的可能会有其他提示,只要根据提示进行修改,加上其他解析器作为第二个参数就行了。

soup = BeautifulSoup(response.text,'lxml')

这样就没错误提示了

现在soup这个对象就承载了我们全部的希望,我们要通过soup这个对象来获取我们需要的数据。老套路,先用dir(soup)一探究竟。

在这里,soup表示的是包含整个response.text的对象,我们需要用一些html标签以及属性来定位到具体的标签对象,然后通过那个标签对象再提取需要的数据。

在这里,我选择了用“select”这个方法,当然还有其他方法可用,上图中可有一大串方法,条条大道通罗马。“select”这个方法有点像写CSS,比如我要找到下图中

豆瓣时间这一块内容

dbtime = soup.select('#anony-time')

print(dbtime)

基本上就定位到了我们所要的标签位置,不过要注意的是,dbtime是一个列表对象,dbtime[0]列表中的元素才是一个标签对象,对于标签对象,我们也可以用“select”方法继续定位。

比如我继续定位到这本书

lis = dbtime[0].select('ul.time-list li')

print(lis[0])

如此,通过BeautifulSoup和select方法就可以比较容易地定位到所需要的数据啦。

上一篇下一篇

猜你喜欢

热点阅读