python爬虫练习1:计算评分平均值

练习要求:

抽取某本书的前50条短评内容并计算评分的平均值。提示:有的评论中并不包含评分。

代码:

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import requests
from bs4 import BeautifulSoup
import re
import time
total = 50 #用于记录剩余的短评数量
ans=0 #用于累加星级
i=1 #用于翻页
kk=0 #临时变量,用于total的二次使用
while total>0: 
    kk=total #将total在循环开始时的值保存
    try:
        r = requests.get("https://book.douban.com/subject/30211681/comments/hot?p="+str(i)) #利用requests库抓取网页内容
    except Exception as err:
        print(err)
        break
    soup = BeautifulSoup(r.text,"lxml") #利用BeautifulSoup库进行解析
    comments = soup.find_all('span', 'short') #找到标签含有span和short的部分
    pattern = re.compile('<span class="user-stars allstar(.*?) rating"')#用complie进行正则表达式预处理
    p = re.findall(pattern, r.text) #在已经抓取的文本中匹配已经解析的正则表达式
    for item in comments:
        total -=1
        if total<0:
            break
        else:
            print(50-total, item.string)
    for star in p:
        kk -=1
        if kk<0:
            break
        else:
            ans+=int(star)
    i+=1
print(ans/50/10)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值