zoukankan      html  css  js  c++  java
  • Python爬虫实战(二)使用Beautifulsuop来解析整个页面

        一.   BeautifulSoup的官方解释:

            Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

    Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

    Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

     1.  在上一篇文章,这篇文章主要记录使用 beautifulsoup来解析我们想要获得字段。因为Beautifulsoup已经移植到bs4,所以要从这个模块引入。

    官方文档:http://beautifulsoup.readthedocs.io/zh_CN/latest/

          find_all( name , attrs , recursive , text , **kwargs )这个方法可以用遍历所有的文档并返回一个列表。 可以同get_text()来回去列表某个元素的内容,get('class')参数是属性名,来获得某个属性的内容

          select()也是遍历文档树,并返回一个列表。其他使用方法同 find_all.唯一不同的是参数传递方法不同,如果select属性查找时还可以加入属性元素,属性需要用中括号括起来,注意属性和标签属于同一节点,所以中间不能加空格,否则会无法匹配到。 eg:soup.select('p[class="star"]')  等价于 soup.find_all('p','star')

     思考:可以看到find_all方法被调用了,是否可以考虑用一个class来包装这个方法,通过传入的参数不同,用面向对象的方法来调用这个类。

    def parse_one_page(soup):
    
        score_integer=soup.find_all('i','integer')
        score_fraction=soup.find_all('i','fraction')
        
        index=soup.find_all('i','board-index')
        actor=soup.find_all('p','star')
        time=soup.find_all('p','releasetime')
        #also can use select method
        #title=soup.select('a[class="image-link"]')[0].get('title')  
        title=soup.find_all('a','image-link') 
        image=soup.find_all('img','board-img')
        for i in range(len(title)):
            yield{ 
                 "index":index[i].get_text(),
                 "title":title[i].get('title'),
                 "actor":actor[i].get_text().strip()[3:],
                 "time":time[i].get_text().strip()[5:],
                 "score":score_integer[i].get_text()+score_fraction[i].get_text(),
                 "image":image[i].get('data-src')
                  
                 }
    

     

  • 相关阅读:
    pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
    scrapy回调函数传递参数
    python发送邮件
    python开发部署时新增数据库中表的方法
    python更新数据库脚本三种方法
    python中json.loads,dumps,jsonify使用
    chmod 命令
    find
    find 命令
    locate 命令
  • 原文地址:https://www.cnblogs.com/yan-2010/p/7099949.html
Copyright © 2011-2022 走看看