美文网首页
Python爬虫练习(2)——我的学习笔记

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

作者: DN_98 | 来源:发表于2018-09-18 19:28 被阅读0次

    通过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方法就可以比较容易地定位到所需要的数据啦。

    相关文章

      网友评论

          本文标题:Python爬虫练习(2)——我的学习笔记

          本文链接:https://www.haomeiwen.com/subject/qhvmnftx.html