首页 > 其他分享 >入门爬虫示例-爬取豆瓣短评

入门爬虫示例-爬取豆瓣短评

时间:2023-05-25 10:02:52浏览次数:44  
标签:短评 sheet 示例 excel class 爬取 import data find


群里有个小妹妹,让我帮她写的代码,好像是作业什么的。花了几分钟看了一下,随便写写,分享给有需要的童鞋,我用python 3 写的,实现的功能就是:爬取豆瓣短评,然后将数据写入本地的excel表格,数据大概有,电影名称,评分,评论人数,短评四项,稍微修改下也可以爬取其他数据。

这属于入门学习的爬虫,博客里的代码,复制到本地,直接就能跑,有些包需要自己安装一下,安装教程自行百度。代码如下:

#-*- coding:UTF-8 -*-
#2018/12/24
#made in baiye
#爬取豆瓣短评,然后将数据写入本地的excel表格,数据大概有,电影名称,评分,评论人数,短评四项。

import requests
from bs4 import BeautifulSoup
import re
import time
import xlrd
import xlwt
from xlutils.copy import copy

#获取页面源码
def getHTMLText(url,k):
    try:
        if(k==0):kw={}
        else: kw={'start':k,'filter':''}
        r = requests.get(url,params=kw,headers={'User-Agent': 'Mozilla/4.0'})
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print("Failed!")

#通过BeautifulSoup查找所需要的数据
def getData(html,n,files):
    soup = BeautifulSoup(html, "html.parser")
    movieList=soup.find('ol',attrs={'class':'grid_view'})#找到第一个class属性值为grid_view的ol标签
    for movieLi in movieList.find_all('li'):#找到所有li标签
        n += 1
        data = []#声明一个list,将得到的数据添加进list
        #得到电影名字
        movieHd=movieLi.find('div',attrs={'class':'hd'})#找到第一个class属性值为hd的div标签
        movieName=movieHd.find('span',attrs={'class':'title'}).getText()#找到第一个class属性值为title的span标签
                                                                         #也可使用.string方法
        data.append(movieName)

        #得到电影的评分
        movieScore=movieLi.find('span',attrs={'class':'rating_num'}).getText()
        data.append(movieScore)

        #得到电影的评价人数
        movieEval=movieLi.find('div',attrs={'class':'star'})
        movieEvalNum=re.findall(r'\d+',str(movieEval))[-1]
        data.append(movieEvalNum)

        # 得到电影的短评
        movieQuote = movieLi.find('span', attrs={'class': 'inq'})
        if(movieQuote):
            data.append(movieQuote.getText())
        else:
            data.append("无")

        #将数据循环写入excel文件
        c = 0
        for r in data:
            rexcel = xlrd.open_workbook(files)  # 用wlrd提供的方法读取一个excel文件
            excel = copy(rexcel)  # 用xlutils提供的copy方法将xlrd的对象转化为xlwt的对象
            table = excel.get_sheet(0)  # 用xlwt对象的方法获得要操作的sheet
            if len(r) > 32767:
                continue
            table.write(n, c, r)  # xlwt对象的写方法,参数分别是行、列、值
            c += 1
            excel.save(files)
if __name__ == '__main__':
    k=0
    n = 0
    files = 'top100.xls'#保存的位置,默认是当前执行目录下。
    workbook = xlwt.Workbook()
    sheet = workbook.add_sheet("sheet1")
    sheet.write(0,0,"电影名称")
    sheet.write(0,1,"评分")
    sheet.write(0,2,"评论人数")
    sheet.write(0,3,"短评")
    workbook.save(files)#当前目录下创建test.xls文件
    basicUrl='https://movie.douban.com/top250'
    while k<=75:
        html=getHTMLText(basicUrl,k)
        time.sleep(2)
        k+=25#每页25条,循环一次加25
        getData(html,n,files)
        n += 25#用于控制excel表的行数

爬取部分结果展示:

入门爬虫示例-爬取豆瓣短评_python


 

标签:短评,sheet,示例,excel,class,爬取,import,data,find
From: https://blog.51cto.com/u_14480168/6345080

相关文章

  • 20、Web服务示例
    如下是main.rs文件内容://src\main.rsusehello::ThreadPool;usestd::thread;usestd::time::Duration;usestd::fs;usestd::io::prelude::*;usestd::net::TcpStream;usestd::net::TcpListener;fnmain(){letlistener=TcpListener::bind("127.0.0.1:78......
  • 1688阿里巴巴中国站按关键字搜索抓取新品数据API接口展示示例(封装可高并发)(Java系列)
    ​一、电商平台上新的重要性 电商平台上新非常重要。 首先,持续的新品上线可以吸引更多的用户访问平台和留存用户的兴趣。新品可以激发用户想要知道更多、购买更多的欲望,从而提高用户的使用频率和转化率。此外,新品上线也可以使电商平台更具竞争力,吸引更多的品牌入驻并增强......
  • 爬取 万年历 xml 操作
    importdatetimeimportrequestsimportxml.etree.ElementTreeasETkw={'wd':'python教程'}url1='https://rili.ximizi.com/jinrijishi.php'url2='https://www.xingzuo5.net/calendar/2025/2025-12-22.html'headers={'User......
  • python嵌入HTTP代理代码示例
    以下是使用Python嵌入HTTP代理的示例代码:```pythonimporturllib.request#设置代理服务器地址和端口号proxy_handler=urllib.request.ProxyHandler({'http':'http://proxy.example.com:8080'})#创建opener对象opener=urllib.request.build_opener(proxy_handler)#使用opene......
  • rpmrebuild 提取spec重新打包rpm示例
    使用rpmrebuild命令重新编辑rpm包rpmrebuild-p-eseatunnel_3_1_4_0_315-2.3.1.3.1.4.0-315.x86_64.rpm编辑完成并保存重新生成repo源createrepo.清除缓存目录下的软件包及旧的headersyumcleanall重新生成缓存yummakecache......
  • UML示例图
    UML示例图:[url]http://www.360doc.com/content/09/0414/18/10587_3131518.shtml[/url][color=red]比较详细[/color]类图分三层,第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注......
  • Sharding-Jdbc配置示例
    ​ #应用名称spring:application:name:sharding-jdbc-test#开发环境设置profiles:active:dev#配置为内存模式shardingsphere:mode:type:Memory#配置真实数据源datasource:names:server-order00,server-order0......
  • 2023新版小程序头像昵称显示 代码示例如下 可复制使用
    新版用户授权名字和头像官网点击触发用户头像部分:<blockwx:if="{{!avatarUrl}}">检查用户头像是否存在。如果头像不存在,显示默认头像。<blockwx:else="{{avatarUrl}}">如果头像存在,显示用户头像。<buttonopen-type="chooseAvatar"bind:chooseavatar="onChooseAvatar"cl......
  • 通过API接口调用数据的优势是什么?API接口调用展示示例
    ​通过API接口调用数据的优势主要有以下几点:1.规范化与一致性:API接口提供一种统一的方式来获取数据,保证了数据的规范化与一致性,消除了不同数据源可能带来的格式和结构上的差异。2.灵活性:使用API接口可以定制请求的参数和返回结果,让请求方可以得到所需的数据,而不必获取整个数......
  • Java调用采集拼多多根据ID获取商品详情API接口返回值说明示例,获取电商平台商品详情数
    ​     拼多多是一家基于C2B拼团营销方式主营团购的电商平台,其盈利模式由利润源、利润点、利润杠杆、利润通道和利润屏障五个要素组成的。通过锁定目标客户、关注客户价值、举办相关活动、不断拓展收入来源等经营策略,拼多多在较短的时间内得以快速成长。然而这种模式也......