1、问题描述:

爬取猫眼TOP100榜的100部高分经典电影,并将数据存储到CSV文件中

2、思路分析:

(1)目标网址:http://maoyan.com/board/4

(2)代码结构:

(3) init(self)初始化函数

· hearders用到了fake_useragent库,用来随机生成请求头。

· datas空列表,用于保存爬取的数据。

  1. def __init__(self,url):
  2. self.headers = {"User-Agent": UserAgent().random}
  3. self.url = url
  4. self.datas = list()

(4) getPage()函数

猫眼Top100榜总共有10页电影,每页的链接基本一样,只有最后一个数字在变化http://maoyan.com/board/4?offset=10,所以可以通过for循环来访问10页的电影。

  1. # 通过for循环,获取10页的电影信息的源码
  2. def getPage(self):
  3. for i in range(0,10):
  4. url = self.url + "?offset={0}".format(i*10)
  5. response = requests.get(url, headers = self.headers)
  6. if response.status_code == 200:
  7. self.parsePage(response.text)
  8. else:
  9. return None

(5)parsePage()函数

每页都有10部高分经典电影,通过BeautifulSoup获取每页10部电影的详细信息:名字、主演、上映时间、评分。

  1. # 通过BeautifulSoup获取每页10部电影的详细信息
  2. def parsePage(self, html):
  3. soup = BeautifulSoup(html, "html.parser")
  4. details = soup.find_all("dd")
  5. for dd in details:
  6. data = {}
  7. data["index"] = dd.find("i").text
  8. data["name"] = dd.find("p", class_ = "name").text
  9. data["star"] = dd.find("p", class_="star").text.strip()[3:]
  10. data["time"] = dd.find("p", class_="releasetime").text.strip()[5:]
  11. data["score"] = dd.find("p", class_="score").text
  12. self.datas.append(data)

(6)savaData()函数

通过DataFrame(),把Top100的电影存储到CSV文件中。

它默认的是按照列名的字典顺序排序的。想要自定义列的顺序,可以加columns字段

  1. # 通过DataFrame,把Top100的电影存储到CSV文件中
  2. def saveData(self):
  3. self.getPage()
  4. data = pd.DataFrame(self.datas)
  5. columns = ["index", "name", "star", "time", "score"]
  6. data.to_csv(".\maoyanTop100.csv", index=False, columns=columns)

3、效果展示

4、完整代码:

  1. # -* conding: utf-8 *-
  2. #author: wangshx6
  3. #data: 2018-11-08
  4. #description: 爬取猫眼TOP100榜的100部高分经典电影
  5. import requests
  6. from bs4 import BeautifulSoup
  7. import pandas as pd
  8. from fake_useragent import UserAgent
  9. class MaoyanSpider(object):
  10. def __init__(self,url):
  11. self.headers = {"User-Agent": UserAgent().random}
  12. self.url = url
  13. self.datas = list()
  14. # 通过for循环,获取10页的电影信息的源码
  15. def getPage(self):
  16. for i in range(0,10):
  17. url = self.url + "?offset={0}".format(i*10)
  18. response = requests.get(url, headers = self.headers)
  19. if response.status_code == 200:
  20. self.parsePage(response.text)
  21. else:
  22. return None
  23. # 通过BeautifulSoup获取每页10部电影的详细信息
  24. def parsePage(self, html):
  25. soup = BeautifulSoup(html, "html.parser")
  26. details = soup.find_all("dd")
  27. for dd in details:
  28. data = {}
  29. data["index"] = dd.find("i").text
  30. data["name"] = dd.find("p", class_ = "name").text
  31. data["star"] = dd.find("p", class_="star").text.strip()[3:]
  32. data["time"] = dd.find("p", class_="releasetime").text.strip()[5:]
  33. data["score"] = dd.find("p", class_="score").text
  34. self.datas.append(data)
  35. # 通过DataFrame,把Top100的电影存储到CSV文件中
  36. def saveData(self):
  37. self.getPage()
  38. data = pd.DataFrame(self.datas)
  39. columns = ["index", "name", "star", "time", "score"]
  40. data.to_csv(".\maoyanTop100.csv", index=False, columns=columns)
  41. if __name__ == "__main__":
  42. url = "http://maoyan.com/board/4"
  43. spider = MaoyanSpider(url)
  44. spider.saveData()

python爬虫:爬取猫眼TOP100榜的100部高分经典电影的更多相关文章

  1. 【爬虫】-爬取猫眼TOP100

    原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...

  2. Python 爬取 猫眼 top100 电影例子

    一个Python 爬取猫眼top100的小栗子 import json import requests import re from multiprocessing import Pool #//进程 ...

  3. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  4. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  5. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  6. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  7. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

  8. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  9. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

随机推荐

  1. iOS 警告收集快速消除

    1.ld: warning: directory not found for option 去掉警告的方法 工程老是提示ld: warning: directory not found for opt ...

  2. guava的重试机制guava-retrying使用

    1,添加maven依赖 <dependency> <groupId>com.github.rholder</groupId> <artifactId>g ...

  3. 最小白的webpack+react环境搭建

    本文也同步发表在我的公众号“我的天空” 从零开始,用最少的配置.最少的代码.最少的依赖来搭建一个最简单的webpack+react环境. 最近在玩webpack+react+移动端,那么第一步自然是搭 ...

  4. spring笔记2-注解

    一.属性与成员变量的区别: 属性:对外暴露的,getxxx/setxxx称为属性; 成员变量:private String name称为成员变量或字段 二.applicationContext.xml ...

  5. Cloud Computing

    More numbers, More power. We waste much more every day. Everything can be connectible through specia ...

  6. C++ Knowledge series overloading

    What does the compiler behind our programming? Overloading in C++ Override all of overloaded functio ...

  7. Azure 5 月新公布

    Azure 5 月新发布:CDN 高级版服务降价,MySQL Database 高级版本和新功能,以及应用程序网关中的 WAF 层发布   Azure CDN 高级版服务自 2017 年 5 月 1 ...

  8. Linux目录与文件的权限意义

    ls -l和ls -al的区别:第一个不会显示隐藏文件,第二个会显示隐藏文件(以点(.)开头的文件) 一.权限对文件(r.w.x主要针对文件的内容而言)的重要性 r:可读取文件内容 w:可以编辑.新增 ...

  9. 洛谷 P1266 速度限制

    题目描述 在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线.开车时每条道路的限速成为最关键的问题.不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快.一种可以辩解的解决方案 ...

  10. Html5 web本地存储

    Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Sto ...