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

通过猫眼电影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. FreeSql (三十三)CodeFirst 类型映射

    前面有介绍过几篇 CodeFirst 内容文章,有 <(二)自动迁移实体>(https://www.cnblogs.com/FreeSql/p/11531301.html) <(三) ...

  2. div标签嵌套原则详解(转载)

    这个也许平时人们不注意,但是非常有用,尤其是当你实在找不到原因为什么网页显示错误的时候. XHTML 的标签有许多:div.ul.li.dl.dt.dd.h1~h6.p.a.addressa.span ...

  3. 列表ListView和ListActivity以及使用SimpleAdapter

    创建listview有2种方式 1>直接使用ListView进行创建 2>让Activity继承ListActivity 下面是listview常用的一些属性 案例: public cla ...

  4. Net基础篇_学习笔记_第十天_方法_方法的练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. map转java对象

    pom依赖: <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons ...

  6. 疑难杂症----windows7

    这两天换了台win7的机器,每次开机发现时间日期没法更新,第一次手动更新后过了一天以后又恢复成20xx/01/01,头疼ing,网上找了好多办法,在这里记录一下,避免以后再碰到同样的问题. 出现这个问 ...

  7. MOOC web前端开发笔记(一)

    网站和网页 网站 互联网上用于展示特定内容的相关网页的集合. 网页 网站中的一页,一个网站中的网页通过"超链接"的方式被组织在一起. 主页 进入网站看到的第一个网页,主页的文件名通 ...

  8. Docker学习之docker常用命令

    docker ps -a 表示所有容器 docker pull 获取image docker build 创建image docker run 运行container docker images 列出 ...

  9. pycharm最新版本激活码(永久有效) python安装教程

    Mac 系统自带python 1.打开终端, 输入 python 可以查看python当前版本. 2.输入“python”回车后即进入解释器,例如打印“hello world!”, 可输入 ‘ pri ...

  10. Cannot find class: com.mysql.jdbc.Driver错误及解决办法。

    在刚刚开始搭建Mybatis源码解析,一步一步从浅入深 简单示例的时候,我使用的是mysql 5.1.12版本的驱动包.运行时出现如下错误: Cause: java.sql.SQLException: ...