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
  • 相关阅读:
    学习过程
    一个链表中包含环,请找出该链表的环的入口结点
    归并排序-递归实现
    31、求整数范围中1的个数
    冒泡排序
    常用的端口对应的协议
    数值的整数次方
    二分查找(折半查找)
    用两个队列模拟栈的弹出和输入
    Java源码-HashMap(jdk1.8)
  • 原文地址:https://www.cnblogs.com/BeautifulSoup/p/8397896.html
Copyright © 2011-2022 走看看