Python爬取猫眼电影100榜并保存到excel表格
首先我们前期要导入的第三方类库有;

通过猫眼电影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)-----python爬取猫眼电影top100榜
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取 ...
- 50 行代码教你爬取猫眼电影 TOP100 榜所有信息
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫 ...
- 40行代码爬取猫眼电影TOP100榜所有信息
主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣ 基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...
- python 爬取猫眼电影top100数据
最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...
- Python 爬取猫眼电影最受期待榜
主要爬取猫眼电影最受期待榜的电影排名.图片链接.名称.主演.上映时间. 思路:1.定义一个获取网页源代码的函数: 2.定义一个解析网页源代码的函数: 3.定义一个将解析的数据保存为本地文件的函数: ...
- Python爬虫项目--爬取猫眼电影Top100榜
本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, ...
- Requests+正则表达式爬取猫眼电影(TOP100榜)
猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...
- python实战项目 — 使用bs4 爬取猫眼电影热榜(存入本地txt、以及存储数据库列表)
案例一: 重点: 1. 使用bs4 爬取 2. 数据写入本地 txt from bs4 import BeautifulSoup import requests url = "http:// ...
- 使用requests爬取猫眼电影TOP100榜单
Requests是一个很方便的python网络编程库,用官方的话是"非转基因,可以安全食用".里面封装了很多的方法,避免了urllib/urllib2的繁琐. 这一节使用reque ...
随机推荐
- 前端自动化部署linux centOs + Jenkins + nignx + 单页面应用
Jenkins是什么? Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能. 准备工作 Linux centOS系统阿里云服务器一个 码云一个存放vu ...
- 关于git远程被覆盖的问题
有同事A和B,git远程版本为A0,两个人的本地项目已经跟远程同步.同事A先向git提交了3次,A1.A2.A3.git远程版本为A0.A1.A2.A3.同事B也向git提交了1次B1,但是同事B提交 ...
- mysql中查询字段为null或者不为null的sql语句怎么写?
在mysql中,查询某字段为空时,切记不可用 = null,而是 is null,不为空则是 is not null select * from table where column is null; ...
- iOS面试题整理带答案
iOS面试题整理带答案 找工作,面试是避免不了的! 而技术开发面试,问一些技术相关的问题是必须的,最新的技术可能人人都趋之若鹜,但有些原理和基础的也希望都有了解. 这里整理了一些iOS相关 ...
- 超实用的SQL语句之嵌套查询
嵌套查询 什么是嵌套查询 . 嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询.其中外层查询也称为父查询,主查询. ...
- Java第二次作业第三题
四叶玫瑰线的图形设计:当用鼠标拖拽改变窗口大小时,四叶玫瑰线会重新绘制 package naizi; import java.awt.*; import java.awt.event.*; impor ...
- Swift从入门到精通第七篇 - 扩展 初识
扩展(学习笔记) 环境Xcode 11.0 beta4 swift 5.1 扩展 为类.结构体.枚举.协议添加新功能,同OC的分类很像,但扩展没有名字 扩展可以添加计算实例属性和计算类型属性(不能添加 ...
- 第六届蓝桥杯java b组第三题
第三题 三羊献瑞 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容. 答案这个题目完全可以使用暴 ...
- 【面试题】Java基础部分面试题
Java基础面试题 Equals与==的区别 使用==比较原生类型如:boolean,,int,char等等, 使用equals()比较对象. 1. ==是判断两个变量或类型是不是指向同一个内存空 ...
- rabbitmq linux卸载
rabbitmq是运行在erlang环境下的,所以卸载时应将erlang卸载. 1.卸载rabbitmq相关 卸载前先停掉rabbitmq服务,执行命令 $ service rabbitmq-serv ...