美文网首页Python精选Python 运维玩耍Python
Python读取网页并获取某节点

Python读取网页并获取某节点

作者: iOneWay | 来源:发表于2016-07-05 10:55 被阅读1145次

    环境:python3.5.1

    Beautiful Soup

    Beautiful Soup是python的一个库,主要用于从网页抓取数据。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
    Beautiful Soup已经成为和xml,html6lib一样出色的python解释器,为用户灵活提供不同的解析策略或强劲的速度。

    由于Beautiful Soup不是python内置库,所以需要下载安装

    pip install beautifulsoup4
    

    代码使用:

    from urllib.request import urlopen
    from urllib.error import URLError
    from bs4 import BeautifulSoup
    
    def getTitle(url):
        try:
            html = urlopen(url)
        except URLError as e:
            print(e)
            return None
        try:
            bsObj = BeautifulSoup(html, "html.parser")
            title = bsObj.body.h1
        except AttributeError as e:
            return None
        return title
    
    title = getTitle("http://www.xxxxxxx.com")
    if title == None:
        print("Title could not be found")
    else:
        print(title)
    

    我们经常会将自己写的网络爬虫开启,然后信心满满地去休息,等第二天打开发现,爬虫早已停止运行,我门需要的数据并没有成功获取,因为程序已经中断退出了。在爬虫执行时,某些html可能不存在了,或者发生了变化,html中某个节点不存在了。 对于这些情况,爬虫会发生异常并退出,为了让爬虫继续工作,我们需要捕获异常,如以上代码。

    注意,当html中没有某一节点,如<pre>节点,我门使用bsObj.pre来获取该节点时,并不会发生异常,而是返回"None".
     但是当我门要获取<pre>的下一节点<p>时,bsObj.pre.p时会出现异常:AttributeError。
    

    相关文章

      网友评论

        本文标题:Python读取网页并获取某节点

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