相信很多朋友在看一部电影的时候喜欢先去豆瓣找一下网友对该片的评价。豆瓣作为国内最权威的电影评分网站,虽然有不少水军和精日精美分子,但是TOP250的电影还是不错的,值得一看。

爬取目标

本文将爬取豆瓣电影 TOP250 排行榜的电影名称、时间、主演和评分等信息,爬去的结果我们将以 excel 格式存储下来。

爬取分析

打开豆瓣电影 TOP250 我们会发现榜单主要显示电影名、主演、上映时间和评分。

通过对网页源码的分析我们发现电影的标题在 <div class=hd'>...</div> 标签中,主演和上映时间信息在 <div class=hd'>...</div> 中,电影评分在 <div class=star'>...</div> 中。所以我们调用 find_all方法,即可获得所有信息。

提取首页信息

def find_movies(res): soup = bs4.BeautifulSoup(res.text, 'html.parser')

 # 电影名 movies = [] targets = soup.find_all("div", class_="hd") for each in targets: movies.append(each.a.span.text)

 # 评分 ranks = [] targets = soup.find_all("span", class_="rating_num") for each in targets: ranks.append(each.text)

 # 资料 messages = [] targets = soup.find_all("div", class_="bd") for each in targets: try: messages.append(each.p.text.split('\n')[1].strip() + each.p.text.split('\n')[2].strip()) except: continue

 result = [] length = len(movies) for i in range(length): result.append([movies[i], ranks[i], messages[i]])

 return result

分页爬取

我们需要爬去的数据是 TOP100 的电影,所以我们需要获取他所有页面的数据

def find_depth(res): soup = bs4.BeautifulSoup(res.text, 'html.parser') depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text

 return int(depth)

写入文件

def save_to_excel(result): wb = openpyxl.Workbook() ws = wb.active

 ws['A1'] = "电影名称" ws['B1'] = "评分" ws['C1'] = "资料"

 for each in result: ws.append(each)

 wb.save("豆瓣TOP250电影.xlsx")

整理代码

import requestsimport bs4import openpyxl

def open_url(url): # 使用代理 # proxies = {"http": "127.0.0.1:1080", "https": "127.0.0.1:1080"} headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'}

 # res = requests.get(url, headers=headers, proxies=proxies) res = requests.get(url, headers=headers)

 return res

def find_movies(res): soup = bs4.BeautifulSoup(res.text, 'html.parser')

 # 电影名 movies = [] targets = soup.find_all("div", class_="hd") for each in targets: movies.append(each.a.span.text)

 # 评分 ranks = [] targets = soup.find_all("span", class_="rating_num") for each in targets: ranks.append(each.text)

 # 资料 messages = [] targets = soup.find_all("div", class_="bd") for each in targets: try: messages.append(each.p.text.split('\n')[1].strip() + each.p.text.split('\n')[2].strip()) except: continue

 result = [] length = len(movies) for i in range(length): result.append([movies[i], ranks[i], messages[i]])

 return result

# 找出一共有多少个页面def find_depth(res): soup = bs4.BeautifulSoup(res.text, 'html.parser') depth = soup.find('span', class_='next').previous_sibling.previous_sibling.text

 return int(depth)

def save_to_excel(result): wb = openpyxl.Workbook() ws = wb.active

 ws['A1'] = "电影名称" ws['B1'] = "评分" ws['C1'] = "资料"

 for each in result: ws.append(each)

 wb.save("豆瓣TOP250电影.xlsx")

def main(): host = "https://movie.douban.com/top250" res = open_url(host) depth = find_depth(res)

 result = [] for i in range(depth): url = host + '/?start=' + str(25 * i) res = open_url(url) result.extend(find_movies(res))

福利以及下期预告

私信回复 python 即可获得 全套 python 资料。下期我将演示如何爬取百度文库 VIP 文章以及令人喷血的性感美女图片(我已经存了几个 G 的图片,最近感觉营养有点跟不上)

python爬虫——爬取豆瓣TOP250电影相关推荐

  1. python爬虫爬取豆瓣top250电影影评

    信息系统课程项目,小组准备做一个电影推荐系统,自己选了觉得很有趣的资源模块,需要获取电影的评价资源等信息.花了大约一周看Web Scraping with Python这本书,对爬虫有了大体但是初略的 ...

  2. python爬虫--爬取豆瓣top250电影名

    关于模拟浏览器登录的header,可以在相应网站按F12调取出编辑器,点击netwook,如下: 以便于不会被网站反爬虫拒绝. 1 import requests 2 from bs4 import ...

  3. Python爬虫爬取豆瓣TOP250和网易云歌单

    python爬虫(网易云)笔记 @(python学习) 先推荐看一下b站的视频链接如下:https://www.bilibili.com/video/BV12E411A7ZQ?from=search& ...

  4. python爬虫——爬取豆瓣热门电影海报生成html文件

    环境 webbrowser urllib requests v2.21.0 实现功能 过程 1.查看豆瓣热门电影模块源码: 看到其所在class为list-wp,我们想通过urllib里面的reque ...

  5. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  6. Python爬虫 爬取豆瓣电影TOP250

    Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...

  7. Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除)

    Python爬虫菜鸟入门,爬取豆瓣top250电影 (自己学习,如有侵权,请联系我删除) import requests from bs4 import BeautifulSoup import ti ...

  8. Python爬虫爬取豆瓣电影Top250

    爬虫爬取豆瓣Top250 文章目录 爬虫爬取豆瓣Top250 完整代码 第一步获取整个网页并以html来解析 正则表达式来匹配关键词 所有信息写入列表中 存入Excel中 效果如图 本文学习自B站UP ...

  9. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

最新文章

  1. 这是一份不完整的数据竞赛年鉴!
  2. 【机器视觉】 dev_open_dialog算子
  3. [WPF疑难] 继承自定义窗口
  4. vector的应用练习
  5. UnrealVS扩展
  6. ServletContext读取属性文件
  7. calendar的使用以及如何获取某月份最后一天的方法
  8. Flutter基础—定位对齐之大小比例
  9. 铭瑄显卡不支持Linux,完善支持 NV显卡Linux驱动275.19正式版
  10. 赵伟国回应华为“平衡者”标签:做个老二、老三也可以
  11. 内功图说--十二段锦
  12. Spring包下Pageable的使用 2
  13. iPad菜单日渐走热美国
  14. 如何实现RTS游戏中鼠标在屏幕边缘时移动视角
  15. python程序员可以从哪些平台接单赚钱?看完我给你介绍的这几个平台,没学过python的你也能边学习边赚钱
  16. ubuntu 建立光纤连接
  17. 命令行下通过jlink烧录Navota小记
  18. SpringBoot33-springboot开发部署与测试-spring boot测试
  19. C++:查验身份证(团体程序设计天梯赛)
  20. ERROR 1067 (42000): Invalid default value for ‘createtime‘

热门文章

  1. 【细胞分割】基于阙值+边缘+形态学+种子点图像分割matlab源码含 GUI
  2. redis的incr+expire的坑
  3. mysql查询行数count(*)、coun(1)、count(primary key)查询效率问题
  4. 组合数据类型练习,英文词频统计实例
  5. 联想台式电脑硬盘分区失败数据恢复
  6. 月入3w+,6年经验测试开发工程师,见识到了真正意义上的测试天花板
  7. K-means聚类算法的应用——Python数据工程No.5
  8. 如何下载知网上的论文?
  9. [源码、文档、分享] iOS/iPhone学习系列、代码教程----~~~持续更新中~~~
  10. win10计算机怎么改中文,windows10 中文,小编教你Win10怎么设置中文语言