爬取豆瓣《毒木圣经》短书评前50条及其评分

 自己写的代码:

import requests
import re
import time
from bs4 import BeautifulSoup

url = ["https://book.douban.com/subject/26630480/comments/hot?p=" + str(i) for i in range(1,5)]
count1, count2 = 1,1
s = 0

for i in range(1,5):
    requset = requests.get(url[i-1])
    soup = BeautifulSoup(requset.text, "lxml")
    comments = soup.find_all('span', 'short')
    for comment in comments:
        if count1 < 50:
            with open("26630480comments.txt", "a", encoding="utf-8")as f:
                f.write(comment.string + "\n")
                count1 += 1
    pattern = re.compile('<span class="user-stars allstar(.*?) rating"')
    p = re.findall(pattern, requset.text)
    for star in p:
        s += int(star)
        count2 += 1
        if count2 == 50:
            print(s/count2)
    time.sleep(5)

别人写的代码:

import requests, re, time
from bs4 import BeautifulSoup

count = 0
i = 0
s, count_s = 0, 0
while count < 50:
    try:
        r = requests.get('https://book.douban.com/subject/26630480/comments/hot?p=' + str(i+1))
    except Exception as err:
        print(err)
        break
    soup = BeautifulSoup(r.text, 'lxml')
    comments = soup.find_all('span', 'short')
    for item in comments:
        count = count + 1
        print(count, item.string)
        if count == 50:
            break
        pattern = re.compile('<span class="user-stars allstar(.*?) rating"')
        p = re.findall(pattern, r.text)
        for star in p:
            count_s = count_s + 1
            s += int(star)
    time.sleep(5) # delay request from douban's robots.txt
    i += 1
    if count == 50:
        print('\n平均分是:%d' %(s // count_s))

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值