豆瓣TOP250电影相关信息获取

        刚开始学爬虫,根据Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析_哔哩哔哩_bilibili学习,自己简单敲了一遍:

import urllib.request
import urllib.error
import re
from bs4 import BeautifulSoup
import xlwt
baseurl = 'https://movie.douban.com/top250?start='
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)
# 1.爬取网页
def askHtml(url):
    head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'}
    request = urllib.request.Request(url=url, headers=head)
    response = urllib.request.urlopen(request)
    html = response.read().decode('utf-8')
    return html
# 2.解析数据
def get_Datalist():
    dataList = []
    for i in range(0,10):    #左闭右开
        url = baseurl + str(i * 25)
        html = askHtml(url)
        soup = BeautifulSoup(html,'html.parser')
        for item in soup.find_all('div',class_='item'):
            data = []
            item = str(item)
            # 影片详情链接
            link = re.findall(findLink,item)[0]
            data.append(link)
            # 图片链接
            img =re.findall(findImgSrc,item)[0]
            data.append(img)
            # 名字
            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)
            # 评分人数
            judge = re.findall(findJudge,item)[0]
            data.append(judge)
            # 概述
            inq = re.findall(findInq,item)
            if len(inq) != 0:
                inq = inq[0].replace('。','')
                data.append(inq)
            else:
                data.append(' ')        #留空
            bd = re.findall(findBd,item)[0]
            bd =re.sub('<br(\s+)?/>(\s+)?',' ',bd)
            bd = re.sub('/',' ',bd)
            data.append(bd.strip())     #去掉前后空格
            dataList.append(data)
    return dataList
def saveData(dataList):
    workbook = xlwt.Workbook(encoding='utf-8',style_compression=0)
    worksheet = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
    col = ('电影详情链接','图片链接','影片中文名','外文名','评分','评价数','概况','相关信息')
    for i in range(0,8):
        worksheet.write(0,i,col[i])     #列名
    for i in range(0,250):
        for j in range(0,8):
            worksheet.write(i + 1 ,j,dataList[i][j])
    workbook.save('豆瓣电影.xls')
dataList = get_Datalist()
saveData(dataList)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是爬取豆瓣top250电影详细信息Python源码: ```python import requests from bs4 import BeautifulSoup def get_movie_details(url): res = requests.get(url) soup = BeautifulSoup(res.text, 'html.parser') # 电影名 name = soup.select_one('h1 span').text.strip() # 导演、演员、类型 info = soup.select_one('div#info').text.strip().split('\n') director = info[0][4:].strip() actors = [actor.strip() for actor in info[1][4:].split('/')] genre = [genre.strip() for genre in info[2][4:].split('/')] # 评分 rating = soup.select_one('strong.rating_num').text.strip() # 评价人数 rating_num = soup.select_one('span.rating_people span').text.strip()[:-3] # 简介 summary = soup.select_one('span.all.hidden').text.strip() # 返回字典 return { 'name': name, 'director': director, 'actors': actors, 'genre': genre, 'rating': rating, 'rating_num': rating_num, 'summary': summary } def get_top250_movies(): movies = [] for i in range(10): url = 'https://movie.douban.com/top250?start=' + str(i*25) + '&filter=' res = requests.get(url) soup = BeautifulSoup(res.text, 'html.parser') for item in soup.select('ol.grid_view li'): # 电影详情链接 link = item.select_one('div.hd a')['href'] movies.append(get_movie_details(link)) return movies if __name__ == '__main__': top250_movies = get_top250_movies() for movie in top250_movies: print(movie) ``` 该代码使用requests库和BeautifulSoup库,通过访问豆瓣电影top250页面,获取每个电影的详细信息。其中,`get_movie_details()`函数用于获取单个电影的详细信息,`get_top250_movies()`函数用于获取豆瓣电影top250列表中所有电影的详细信息。最后,将获取到的电影信息以字典形式存储,并打印输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值