• 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')
                  
                 }
    

     

  • 相关阅读:
    用户可以设置每页显示记录数的分页程序
    将分页程序写成函数
    对查询结果进行分页
    使用mysql_query()方法操纵数据库以及综合实例
    php访问数据库
    cookie记录用户的浏览商品的路径
    php中如何输出当前服务器的(中国)当前时间
    mysql 与 mysqli的区别
    Django框架 之 ORM中介模型
    Django框架 之 查询 Extra
  • 原文地址:https://www.cnblogs.com/yan-2010/p/7099949.html
Copyright © 2020-2023  润新知