• 爬取时间:2019-09-23
  • 爬取难度:★☆☆☆☆☆
  • 请求链接:https://maoyan.com/board/4
  • 爬取目标:猫眼电影 TOP100 的电影名称、排名、主演、上映时间、评分、封面图地址,数据保存为 CSV 文件
  • 涉及知识:请求库 requests、解析库 lxml、Xpath 语法、CSV 文件储存
  • 完整代码:https://github.com/TRHX/Python3-Spider-Practice/tree/master/BasicTraining/maoyan-top100
  • 其他爬虫实战代码合集(持续更新):https://github.com/TRHX/Python3-Spider-Practice
  • 爬虫实战专栏(持续更新):https://itrhx.blog.csdn.net/article/category/9351278

文章目录

  • 【1x00】循环爬取网页模块
  • 【2x00】解析模块
  • 【3x00】数据储存模块
  • 【4x00】完整代码
  • 【4x00】数据截图

【1x00】循环爬取网页模块

观察猫眼电影TOP100榜,请求地址为:https://maoyan.com/board/4

每页展示10条电影信息,翻页观察 url 变化:

第一页:https://maoyan.com/board/4

第二页:https://maoyan.com/board/4?offset=10

第三页:https://maoyan.com/board/4?offset=20

一共有10页,利用一个 for 循环,从 0 到 100 每隔 10 取一个值拼接到 url,实现循环爬取每一页

def index_page(number):url = 'https://maoyan.com/board/4?offset=%s' % numberresponse = requests.get(url=url, headers=headers)return response.textif __name__ == '__main__':for i in range(0, 100, 10):index = index_page(i)

【2x00】解析模块

定义一个页面解析函数 parse_page(),使用 lxml 解析库的 Xpath 方法依次提取电影排名(ranking)、电影名称(movie_name)、主演(performer)、上映时间(releasetime)、评分(score)、电影封面图 url(movie_img)

通过对主演部分的提取发现有多余的空格符和换行符,循环 performer 列表,使用 strip() 方法去除字符串头尾空格和换行符

电影评分分为整数部分和小数部分,依次提取两部分,循环遍历组成一个完整的评分

最后使用 zip() 函数,将所有提取的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表

def parse_page(content):tree = etree.HTML(content)# 电影排名ranking = tree.xpath("//dd/i/text()")# 电影名称movie_name = tree.xpath('//p[@class="name"]/a/text()')# 主演performer = tree.xpath("//p[@class='star']/text()")performer = [p.strip() for p in performer]# 上映时间releasetime = tree.xpath('//p[@class="releasetime"]/text()')# 评分score1 = tree.xpath('//p[@class="score"]/i[@class="integer"]/text()')score2 = tree.xpath('//p[@class="score"]/i[@class="fraction"]/text()')score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]# 电影封面图movie_img = tree.xpath('//img[@class="board-img"]/@data-src')return zip(ranking, movie_name, performer, releasetime, score, movie_img)

【3x00】数据储存模块

定义一个 save_results() 函数,将所有数据保存到 maoyan.csv 文件

def save_results(result):with open('maoyan.csv', 'a') as fp:writer = csv.writer(fp)writer.writerow(result)

【4x00】完整代码

# =============================================
# --*-- coding: utf-8 --*--
# @Time    : 2019-09-23
# @Author  : TRHX
# @Blog    : www.itrhx.com
# @CSDN    : https://blog.csdn.net/qq_36759224
# @FileName: maoyan.py
# @Software: PyCharm
# =============================================import requests
from lxml import etree
import csvheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}def index_page(number):url = 'https://maoyan.com/board/4?offset=%s' % numberresponse = requests.get(url=url, headers=headers)return response.textdef parse_page(content):tree = etree.HTML(content)# 电影排名ranking = tree.xpath("//dd/i/text()")# 电影名称movie_name = tree.xpath('//p[@class="name"]/a/text()')# 主演performer = tree.xpath("//p[@class='star']/text()")performer = [p.strip() for p in performer]# 上映时间releasetime = tree.xpath('//p[@class="releasetime"]/text()')# 评分score1 = tree.xpath('//p[@class="score"]/i[@class="integer"]/text()')score2 = tree.xpath('//p[@class="score"]/i[@class="fraction"]/text()')score = [score1[i] + score2[i] for i in range(min(len(score1), len(score2)))]# 电影封面图movie_img = tree.xpath('//img[@class="board-img"]/@data-src')return zip(ranking, movie_name, performer, releasetime, score, movie_img)def save_results(result):with open('maoyan.csv', 'a') as fp:writer = csv.writer(fp)writer.writerow(result)if __name__ == '__main__':print('开始爬取数据...')for i in range(0, 100, 10):index = index_page(i)results = parse_page(index)for i in results:save_results(i)print('数据爬取完毕!')

【4x00】数据截图

Python3 爬虫实战 — 猫眼电影TOP100【requests、lxml、Xpath、CSV 】相关推荐

  1. csv中包含多余换行符_Python3爬虫之猫眼电影TOP100(requests、lxml、Xpath、CSV)

    点击关注,我们共同每天进步一点点! [1x00]循环爬取网页模块 观察猫眼电影TOP100榜,请求地址为:https://maoyan.com/board/4 每页展示10条电影信息,翻页观察 url ...

  2. python爬虫实战——猫眼电影案例

    python爬虫实战--猫眼电影案例 ·背景   笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信 ...

  3. Python3 爬虫实战 — 豆瓣电影TOP250【requests、Xpath、正则表达式、CSV、二进制数据储存】

    爬取时间:2019-09-27 爬取难度:★★☆☆☆☆ 请求链接:https://movie.douban.com/top250 以及每部电影详情页 爬取目标:爬取榜单上每一部电影详情页的数据,保存为 ...

  4. 【python爬虫】猫眼电影TOP100电影封面下载

    在上次爬取信息的基础上下载图片. 下载挺容易的 在封面命名上画了大笔时间..... import requests import bs4 from bs4 import BeautifulSoup i ...

  5. python3 爬取猫眼电影Top100信息(正则+requests)

    import json from multiprocessing.dummy import Pool import requests import redef get_one_page(url):# ...

  6. 爬虫从头学之Requests+正则表达式爬取猫眼电影top100

    爬取思路 当我们想要爬取一个页面的时候,我们要保证思路清晰,爬虫的思路分四个步骤,发起请求,获取响应内容,解析内容,存储内容.根据这四个内容我们的思路就很清晰.以下为具体步骤 使用requests库爬 ...

  7. Python爬虫之requests+正则表达式抓取猫眼电影top100以及瓜子二手网二手车信息(四)...

    requests+正则表达式抓取猫眼电影top100 一.首先我们先分析下网页结构 可以看到第一页的URL和第二页的URL的区别在于offset的值,第一页为0,第二页为10,以此类推. 二.< ...

  8. 【Python爬虫】猫眼电影榜单Top100

    这是一个入门级的Python爬虫,结构易于理解.本文对编写此爬虫的全过程进行了讲述.希望对大家的Python爬虫学习有所帮助. 一.目标 爬取猫眼电影榜单Top100,将数据存入Excel文件中,并利 ...

  9. 网络爬虫-猫眼电影top100

    接下来的一个月将更新多个网络爬虫的博文,同时也是分享自己在网络爬虫道路上的磕磕绊绊,学习和成长的历程. 今天的网络爬虫是爬取猫眼电影top100,实现分页爬取,然后保存在本地txt文本上. url : ...

最新文章

  1. jforum中对各种servlet对象都进行了封装
  2. java swing button和键盘监听冲突问题
  3. Java中native关键字
  4. P1582 倒水(二进制)
  5. RSA公钥文件(PEM)解析
  6. 额外参数_Pytorch获取模型参数情况的方法
  7. 浅谈Spring中JDK动态代理与CGLIB动态代理
  8. 谈宏晶STC单片机的ISP功能 (芯片保密性)转
  9. 影之刃3如何在电脑上玩 影之刃3模拟器玩法教程
  10. 惠普HP Designjet Z5200 PostScript 打印机驱动
  11. MSP430F149IPMR
  12. C语言交换a,b值的几种写法
  13. JavaScript在发送AjAX请求时,URL的域名地址是使用绝对地址还是相对地址?
  14. Android 如何解决默认壁纸更改为ImageWallpaper之外的壁纸,在特定的操作下,导致死机的问题。
  15. 什么是VR全景相机?
  16. 远程控制android盒子,实现远程控制监控安卓手机的向日葵UUPro使用评测,淘汰的安卓手机可以派上用场了...
  17. ubuntu无法添加PPA
  18. 单独编译某个驱动模块
  19. 联想g50-80黑苹果成功
  20. CAD批量打印软件破解手记(E01著)

热门文章

  1. ibatis的简介与初步搭建应用
  2. 解决input设置背景后,在ie7下浏览内容过长背景跟着滚动
  3. 语言差异引起的问题解决一例
  4. 电子报账系统源码_网上商城系统建设心得,轻松搞定选择困难
  5. python 访问sas 逻辑库,SAS | 逻辑库和SAS数据集
  6. 车间生产能耗管控方案_如何给生产车间降温 环保空调的这些方案一定能帮到你...
  7. unity 烘焙参数 设置_Unity通用渲染管线(URP)系列(九)——点光源和聚光灯
  8. python while九九乘法表儿歌_python使用while循环实现九九乘法表
  9. Logistic Regression:最基础的神经网络
  10. pin controller driver代码分析