zoukankan      html  css  js  c++  java
  • Python瓦匠系列 —— 爬虫小实验

    项目一 从豆瓣上面找出一本你感兴趣的书,抓取它的某一页短评,并计算其总分。

    目标网页:https://book.douban.com/subject/27188298/comments/

    第一步:使用requests库和BeautifulSoup对目标网页进行解析。

    import requests
    from bs4 import BeautifulSoup
    import re
    
    sum = 0
    i = 1
    #使用text属性,提取文本内容。
    r = requests.get('https://book.douban.com/subject/27188298/comments/').text
    html = BeautifulSoup(r,'lxml')
    #find_all方法找到p标签下的所有 comment-content。
    bsObj = html.find_all('p','comment-content')    
    for item in bsObj:
         print(str(i).ljust(3) + item.string + '
    ')    #给评论加上序号并进行分行。
         i += 1    #python并支持i++这种整数自增语法。

    运行的结果如下:

    1  李维嘛,清新治愈,一年一本,创造力真是惊人
    
    2  很暖心的一部小说。本来以为苏珊是女主,读完之后才知道玛丽才是真正的女主。我喜欢这个懂得爱的女主,她的放手是一种欲擒故纵,健康的依恋关系,真是美好的爱情 和婚姻生活啊。
    《你在哪里》很容易读,相当的温心。
    
    3  故事的前半段真的看得非常揪心,等一个人的感觉太苦,但后来的情节有了反转,挺出乎意料的。
    
    4  ...
    
    18 画面感很强,拍成电视剧应该很好看。不怪时间,是我们误会了对方在心里的位置。苏菲的价值寄托在拯救别人身上,当别人对他有一丝一毫的动摇,他就崩溃了,爱自己才能够爱别人。菲利普与苏菲的世界都是各自不想放手自己的生活,又不想辜负梦想中爱情的样子。不要考验爱情,更不要失去自我。看完感触很多,希望你也有不同的收获。
    
    19 这世上总有一个地方,让无处安放的灵魂找到栖息之所
    
    20 喜欢马克李维的书,这本也很暖心!

    第二步:计算总分

    我们需要使用re正则表达式模块。

    我们在使用浏览器审查网页源码时可以看到这样一行:

       <span class="user-stars allstar40 rating" title="推荐"> 其中40 就是我们想要的分数。

      要想匹配这种模式"字符串()字符串",常用的方法:(.*?)

      例如本例:user-stars allstar(.*?) rating"

      当然我们还需要更加深入的去学习正则表达式。

    pattern_s = re.compile('<span class="user-stars allstar(.*?) rating"')
    p = re.findall(pattern_s,r)
    for star in p:
         sum += int(star)
    print(sum)

    最后整合一下代码,看一下运行结果:

    import requests
    from bs4 import BeautifulSoup
    import re
    
    sum = 0
    i = 1
    #使用text属性,提取文本内容。
    r = requests.get('https://book.douban.com/subject/27188298/comments/').text
    html = BeautifulSoup(r,'lxml')
    #find_all方法找到p标签下的所有 comment-content。
    bsObj = html.find_all('p','comment-content')    
    for item in bsObj:
         print(str(i).ljust(3) + item.string + '
    ')    #给评论加上序号并进行分行。
         i += 1    #python并支持i++这种整数自增语法。
    #抓取评论分数并计算总和。
    pattern_s = re.compile('<span class="user-stars allstar(.*?) rating"')
    p = re.findall(pattern_s,r)
    for star in p:
         sum += int(star)
    print(sum)

     结果:

    1  李维嘛,清新治愈,一年一本,创造力真是惊人
    
    2  很暖心的一部小说。本来以为苏珊是女主,读完之后才知道玛丽才是真正的女主。我喜欢这个懂得爱的女主,她的放手是一种欲擒故纵,健康的依恋关系,真是美好的爱情 和婚姻生活啊。
    《你在哪里》很容易读,相当的温心。
    
    3  故事的前半段真的看得非常揪心,等一个人的感觉太苦,但后来的情节有了反转,挺出乎意料的。
    4  ...
    18 画面感很强,拍成电视剧应该很好看。不怪时间,是我们误会了对方在心里的位置。苏菲的价值寄托在拯救别人身上,当别人对他有一丝一毫的动摇,他就崩溃了,爱自己才能够爱别人。菲利普与苏菲的世界都是各自不想放手自己的生活,又不想辜负梦想中爱情的样子。不要考验爱情,更不要失去自我。看完感触很多,希望你也有不同的收获。
    
    19 这世上总有一个地方,让无处安放的灵魂找到栖息之所
    
    20 喜欢马克李维的书,这本也很暖心!
    
    900
  • 相关阅读:
    2014-写给明年现在的自己
    DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射
    DDD 领域驱动设计-在动手之前,先把你的脑袋清理干净
    醍醐灌顶:领域驱动设计实现之路
    拨乱反正:DDD 回归具体的业务场景,Domain Model 再再重新设计
    设计窘境:来自 Repository 的一丝线索,Domain Model 再重新设计
    No zuo no die:DDD 应对具体业务场景,Domain Model 重新设计
    拨开迷雾,找回自我:DDD 应对具体业务场景,Domain Model 到底如何设计?
    【记录】GitHub/TortoiseGit 修改邮箱/提交者
    死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
  • 原文地址:https://www.cnblogs.com/BeautifulSoup/p/8397896.html
Copyright © 2011-2022 走看看