Python爬虫豆瓣电影Top250个电影数据保存在Excel

from bs4 import BeautifulSoup
import urllib.request,urllib.error
import re
import xlwt




#爬取网页
findLink = re.compile(r'<a href="(.*?)">')
findImgSrc = re.compile(r'<img.*src="(.*?)"',re.S)
findTitle = re.compile(r'<span class="title">(.*)</span>')
findRating = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
findJudge = re.compile(r'<span>(\d*)</span>')
findInq = re.compile(r'<span class="inq">(.*?)</span>')
findBd = re.compile(r'<p class="">(.*?)</p>',re.S)

def main():
    baseurl="https://movie.douban.com/top250?start="
    datalist=getDate(baseurl)
    savepath=".\\豆瓣电影Top250.xls"
    saveData(datalist,savepath)





def getDate(baseurl):
    datalist = []
    for i in range(0,10): #调用函数访问网页十次
        url=baseurl + str(i*25)
        html=askURL(url)
        soup=BeautifulSoup(html,"html.parser")
        for item in soup.find_all('div',class_='item'):
            item=str(item)
            data = []
            link=re.findall(findLink,item)[0]
            data.append(link)
            ImgSrc = re.findall(findImgSrc,item)[0]
            data.append(ImgSrc)
            titles = re.findall(findTitle,item)
            if len(titles) == 2:
                ctitle = titles[0]
                data.append(ctitle)
                otitle = titles[1].replace("/","")
                data.append(otitle)
            else:
                data.append(titles[0])
                data.append(' ')
            rating = re.findall(findRating,item)[0]
            data.append(rating)
            judgeNum = re.findall(findJudge,item)
            data.append(judgeNum)
            inq = re.findall(findInq,item)
            if len(inq) != 0:
                inq = inq[0].replace("。","")
                data.append(inq)
            else:
                data.append(" ")
            bd = str()
            bd = re.findall(findBd,item)[0]
            bd = re.sub('<br(\s+)?/>(\s+)?'," ",bd)
            bd = re.sub('/',' ',bd)
            data.append(bd.strip())                 #去掉空格

            datalist.append(data)                 #把处理好的一部电影的信息载入datalist




    return datalist




def askURL(url):
    head={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67"
    }
    request=urllib.request.Request(url,headers=head)
    html=''
    try:
        response=urllib.request.urlopen(request)
        html=response.read().decode('utf-8')
        #print(html)
    except urllib.error.URLError as e:
        if hasattr(e,'code'):
            print(e.code)
        if hasattr(e,'reason'):
            print(e.reason)
    return html


def saveData(datelist,savepath):
     print("save......")
     book = xlwt.Workbook(encoding='utf-8')
     sheet = book.add_sheet('豆瓣电影Top250')
     col = ("电影链接","图片链接","影片中文名","影片外国名","评分","评价数","概况","相关信息")
     for i in range(0,8):
         sheet.write(0,i,col[i])
     for i in range(0,250):
         print("第%d条"%i)
         data = datelist[i]
         for j in range(0,8):
             sheet.write(i+1,j,data[j])
     book.save("student.xls")



if __name__ == '__main__':
    main()







  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要爬取豆瓣电影Top250保存Excel中,需要使用Python编写爬虫程序,从豆瓣电影网站中抓取数据,并存储Excel文件中。具体实现过程需要掌握Python的基础知识,以及爬虫开发的相关技术。 ### 回答2: Python是一种强大的编程语言,可以用来处理各种数据。在这里,我们将介绍如何使用Python爬取豆瓣电影Top250,并将它们保存Excel文件中。 首先,我们需要安装一些必要的Python库,如requests(用于访问网页)、beautifulsoup4(用于解析网页)和openpyxl(用于创建保存Excel文件)。您可以使用pip安装它们,如下所示: ``` pip install requests beautifulsoup4 openpyxl ``` 一旦这些库安装完成,我们可以开始编写代码。下面是一个简单的Python脚本,用于爬取豆瓣电影Top250并将它们保存Excel文件中: ``` python import requests from bs4 import BeautifulSoup from openpyxl import Workbook # 创建一个工作簿 workbook = Workbook() # 获取工作簿的第一个工作表 worksheet = workbook.active # 豆瓣电影Top250的URL地址 url = 'https://movie.douban.com/top250' # 循环每一页 for page in range(0, 250, 25): # 创建一个新的请求,设置一些参数,如URL、headers和params(用于分页) resp = requests.get(url, headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}, params={'start': page, 'filter': ''}) # 解析HTML内容 soup = BeautifulSoup(resp.text, 'html.parser') # 查找电影列表中的每电影 for movie in soup.select('ol.grid_view > li'): # 获取电影标题、评分、链接和封面等信息 name = movie.select_one('div.hd a').text.strip() score = movie.select_one('span.rating_num').text.strip() link = movie.select_one('div.hd a')['href'] cover = movie.select_one('img')['src'] # 将这些信息写入Excel表格 worksheet.append([name, score, link, cover]) # 将工作簿保存到文件中 workbook.save('douban_movies.xlsx') ``` 代码的工作原理如下:它通过循环遍历电影Top250的每一页,并使用requests库获得页面的HTML内容,用beautifulsoup4库将其解析为电影列表中的每个电影。然后,它获取有用的信息(如标题、评分、链接和封面)并将它们写入Excel表格中,最后将工作簿保存到文件中。这样,我们就可以轻松地将小数据保存下来并进行分析。 总的来说,Python是一个功能强大、易于学习的编程语言,可以用于处理各种任务,包括数据爬取和处理。如果您正在寻找一种简单而又有用的方法来从豆瓣电影Top250中提取数据,那么这个Python脚本肯定值得一试。 ### 回答3: Python 爬虫技术可以用于爬取各种网站上的数据,如今在爬取电影发展的过程中已经非常成熟,而豆瓣电影网站 top250 更是一个常见的爬取目标。下面详细介绍 Python 爬取豆瓣电影 Top250保存Excel 的过程。 1. 分析网页结构 爬取网站数据之前,首先要分析网站页面结构。我们可以打开 Chrome 浏览器,进入豆瓣电影 Top250 页面,按下 F12 键,打开开发者工具,切换到 Network 面板,刷新页面,观察请求内容和响应结果。 2. 分析页面收集数据 在页面开发者工具 Network 面板中发现 Request URL 字段包含了请求的链接,Observation URL 字段包含了电影的详情页链接。因此我们首先需要获取该字段下的详情页链接。 同时,在 Response 中找到电影名称、评分、导演、演员、上映时间、电影封面等相关字段。 3. 使用 Python 爬取网站数据 接下来,我们使用 Python 的 requests 库模拟请求链接,用 BeautifulSoup 库解析 HTML 代码,过滤链接和爬取相关字段。具体爬虫代码实现如下: ```python import requests from bs4 import BeautifulSoup import xlwt def get_movie_data(): movie_data = [] for i in range(0, 250, 25): url = 'https://movie.douban.com/top250?start={}&filter='.format(i) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) # 对获取的html网页进行解析,以便获取我们想要的数据 soup = BeautifulSoup(response.text, 'html.parser') movie_list = soup.find('ol', class_='grid_view') movie_list_li = movie_list.find_all('li') for movie in movie_list_li: movie_data_temp = [] movie_title = movie.find('div', class_='hd').find('span', class_='title').text movie_title = movie_title.replace(' ', ' ') # 判断是否有上映年份 if(movie.find('div', class_='bd').find('span', class_='year')): movie_year = movie.find('div', class_='bd').find('span', class_='year').text else: movie_year = '' movie_rating_num = movie.find('span', class_='rating_num').text movie_rating = movie.find('div', class_='star').find_all('span')[1].text movie_intro = movie.find('div', class_='bd').find('p').text.strip() movie_data_temp.append(movie_title) movie_data_temp.append(movie_year) movie_data_temp.append(movie_rating_num) movie_data_temp.append(movie_rating) movie_data_temp.append(movie_intro) movie_data.append(movie_data_temp) return movie_data # 生成excel def create_excel(): # 创建工作簿 workbook = xlwt.Workbook(encoding='UTF-8') # 创建sheet sheet1 = workbook.add_sheet('Sheet1', cell_overwrite_ok=True) # 设置表头 sheet1.write(0, 0, '电影名称') sheet1.write(0, 1, '上映时间') sheet1.write(0, 2, '评分人数') sheet1.write(0, 3, '电影评分') sheet1.write(0, 4, '电影简介') row = 1 for data in get_movie_data(): sheet1.write(row, 0, data[0]) sheet1.write(row, 1, data[1]) sheet1.write(row, 2, data[2]) sheet1.write(row, 3, data[3]) sheet1.write(row, 4, data[4]) row += 1 workbook.save('movie_top250.xls') ``` 4. 实现程序并生成 Excel 文件 完成爬虫代码编写之后,执行相应程序命令,等待爬虫抓取数据并生成 Excel 文件。 ```python if __name__ == '__main__': create_excel() ``` 通过以上方法,我们就可以轻松地将豆瓣电影 Top250 数据爬取下来,并保存Excel 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值