首先我们前期要导入的第三方类库有;

通过猫眼电影100榜的源码可以看到很有规律 如:

亦或者是:

根据规律我们可以得到非贪婪的正则表达式

"""<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>"""

之后我们观察网页地址(url)的变化规律:

这是第一页的网址: https://maoyan.com/board/4?offset=0

这是第二页的网址: https://maoyan.com/board/4?offset=10

这是第三页的网址: https://maoyan.com/board/4?offset=20

可以见的网页变化规律为:(当前页数-1)*10   即为:(N-1)*10

之后下面进行爬取

 from urllib import request
import random
import time
import csv
import re
import xlwt class catEyesMovie: def __init__(self):
self.url = 'https://maoyan.com/board/4?offset={}'
self.ua_list = [
'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
]
self.line = 1;
#'User-Agent': 'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1' #获取网页内容
def get_page(self,url):
#使用随机的user-agent
headers = {'User-Agent':random.choice(self.ua_list)}
#创建请求对象
req = request.Request(url=url,headers=headers)
#发送请求
res = request.urlopen(req)
#获取相应对象
html = res.read().decode('utf-8','ignore')
return html #清洗数据
def clean_page(self,html,xwlt):
pattern = re.compile("""<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>""", re.S)
r_list = pattern.findall(html)
self.write_page(r_list,xwlt) #保存内容
def write_page(self,r_list,xwlt):
one_film_dict = {}
for rt in r_list:
xwlt.write(self.line,0,rt[0].strip())
xwlt.write(self.line,1,rt[1].strip())
xwlt.write(self.line,2,rt[2].strip())
self.line+=1 def main(self,xwlt):
#凭借字符串
res = []
for i in range(1,11):
#拼接url地址 https://maoyan.com/board/4?offset={}
#获取当前页数
offset = (i-1)*10
url = self.url.format(offset)
html = self.get_page(url)
self.clean_page(html,xwlt) if __name__ == '__main__':
start = time.time()
spider = catEyesMovie()
#创建一个xlwt对象
book = xlwt.Workbook(encoding='utf-8')
#创建sheet,Sheet1为表的名字,cell_overwirite_ok为是否覆盖单元格
sheet1 = book.add_sheet(u'Sheet1',cell_overwrite_ok=True)
#进行第一行标题定义
sheet1.write(0,0,'电影名称')
sheet1.write(0,1,'主演')
sheet1.write(0,2,'上映时间')
#进行爬取
spider.main(sheet1)
book.save('D:\\write.xls')
end = time.time()
print('执行时间为: %.2f' % (end-start))

每次爬取到的数据结构为:

 {'电影名称': '速度与激情5', '主演': '速度与激情5', '上映时间': '速度与激情5'}
{'电影名称': '驯龙高手', '主演': '驯龙高手', '上映时间': '驯龙高手'}
{'电影名称': '勇敢的心', '主演': '勇敢的心', '上映时间': '勇敢的心'}
{'电影名称': '闻香识女人', '主演': '闻香识女人', '上映时间': '闻香识女人'}
{'电影名称': '神偷奶爸', '主演': '神偷奶爸', '上映时间': '神偷奶爸'}

完成后的excel表格如下:

        仅供学习!!

Python爬取猫眼电影100榜并保存到excel表格的更多相关文章

  1. 爬虫系列(1)-----python爬取猫眼电影top100榜

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...

  2. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫 ...

  3. 40行代码爬取猫眼电影TOP100榜所有信息

    主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣  基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...

  4. python 爬取猫眼电影top100数据

    最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...

  5. Python 爬取猫眼电影最受期待榜

     主要爬取猫眼电影最受期待榜的电影排名.图片链接.名称.主演.上映时间. 思路:1.定义一个获取网页源代码的函数: 2.定义一个解析网页源代码的函数: 3.定义一个将解析的数据保存为本地文件的函数: ...

  6. Python爬虫项目--爬取猫眼电影Top100榜

    本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构,  ...

  7. Requests+正则表达式爬取猫眼电影(TOP100榜)

    猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...

  8. python实战项目 — 使用bs4 爬取猫眼电影热榜(存入本地txt、以及存储数据库列表)

    案例一: 重点: 1. 使用bs4 爬取 2. 数据写入本地 txt from bs4 import BeautifulSoup import requests url = "http:// ...

  9. 使用requests爬取猫眼电影TOP100榜单

    Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用reque ...

随机推荐

  1. [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher 题解报告

    来刷kuangbin字符串了,字符串处理在ACM中是很重要的,一般比赛都会都1——2道有关字符串处理的题目,而且不会很难的那种,大多数时候都是用到一些KMP的性质或者找规律. 点击标题可跳转至VJ比赛 ...

  2. EasySwoole+ElasticSearch打造 高性能 小视频服务系统

    EasySwoole+ElasticSearch打造高性能小视频服务 第1章 课程概述 第2章 EasySwoole框架快速上手 第3章 性能测试 第4章 玩转高性能消息队列服务 第5章 小视频服务平 ...

  3. 近日让很多人议论纷纭的P++,PHP新分支?

    最近大家可能有看到一个新的名词——P++. 很巧这个词来源于不久前从 Zend 公司离职的 Zeev Suraski 以 PHP 开发组成员的身份提议要创建 PHP 方言,暂命名为 P++. 老兄最近 ...

  4. sys模块理解补充

    首先,我们利用import语句输入sys模块.基本上这句话告诉python,我们想要这个模块.sys模块包含了与python解释器和它的环境有关的函数. 当python执行import sys语句的时 ...

  5. nfs 存储服务

    今日内容: NFS 1.什么是nfs? network file system 网络文件系统 nfs共享存储 2.nfs能干什么? nfs 能为 不同主机系统之间 实现 文件的共享 3.为什么要使用n ...

  6. Day3 目录结构及文件管理

    Windows:以多根的方式组织文件C :  D:   E:   F: linux:以单根的方式组织文件 / 2.存放命令相关的目录 /bin 普通用户的使用的命令 /bin /ls ,/bin/da ...

  7. scp建立安全信任关系

    1. 在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书. [root@Client root]# ssh-keygen -b 1024 -t rsa Gener ...

  8. PHP的跨域问题

    服务端的代码 public function test(){ header("Access-Control-Allow-Origin: http://cnblogs.com"); ...

  9. 【面试】我是如何在面试别人Redis相关知识时“软怼”他的

    事出有因 Redis是一个分布式NoSQL数据库,因其数据都存储在内存中,所以访问速度极快,因此几乎所有公司都拿它做缓存使用,所以Redis常被称为分布式缓存. 一次我的一个同事让我帮他看Redis相 ...

  10. VMbox 安装 LInux系统流程

    STEP 1 文件--新建---(自定义高级)---(默认设置)---(稍后安装系统)---(Linux+选择版本)---(虚拟机名字+存放位置)---(处理器2+核数2)---(虚拟机内存)2G一般 ...