1、问题描述:

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

2、思路分析:

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

(2)代码结构:

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

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

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

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

(4) getPage()函数

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

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

(5)parsePage()函数

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

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

(6)savaData()函数

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

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

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

3、效果展示

4、完整代码:

# -* conding: utf-8 *-
#author: wangshx6
#data: 2018-11-08
#description: 爬取猫眼TOP100榜的100部高分经典电影 import requests
from bs4 import BeautifulSoup
import pandas as pd
from fake_useragent import UserAgent class MaoyanSpider(object): def __init__(self,url):
self.headers = {"User-Agent": UserAgent().random}
self.url = url
self.datas = list() # 通过for循环,获取10页的电影信息的源码
def getPage(self):
for i in range(0,10):
url = self.url + "?offset={0}".format(i*10)
response = requests.get(url, headers = self.headers)
if response.status_code == 200:
self.parsePage(response.text)
else:
return None # 通过BeautifulSoup获取每页10部电影的详细信息
def parsePage(self, html):
soup = BeautifulSoup(html, "html.parser")
details = soup.find_all("dd")
for dd in details:
data = {}
data["index"] = dd.find("i").text
data["name"] = dd.find("p", class_ = "name").text
data["star"] = dd.find("p", class_="star").text.strip()[3:]
data["time"] = dd.find("p", class_="releasetime").text.strip()[5:]
data["score"] = dd.find("p", class_="score").text
self.datas.append(data) # 通过DataFrame,把Top100的电影存储到CSV文件中
def saveData(self):
self.getPage()
data = pd.DataFrame(self.datas)
columns = ["index", "name", "star", "time", "score"]
data.to_csv(".\maoyanTop100.csv", index=False, columns=columns) if __name__ == "__main__":
url = "http://maoyan.com/board/4"
spider = MaoyanSpider(url)
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. Hibernate系列3-----之修改

    只是修改测试类,先看其他的代码的同学,请翻看我的博客Hibernate1,嘿嘿,我就在这不在重写一遍来 @Test public void testhibernate() { updateStuden ...

  2. poj 1155 输入输出问题

    http://acm.hust.edu.cn/vjudge/problem/16417 重做了一遍poj 1155 题目大意:给定一棵树,1为根结点表示电视台,有m个叶子节点表示客户,有n-m-1个中 ...

  3. POS开发问题 - 输入非数字弹出提示框的实现

    业务场景: 一个输入框,如果输入非数字,那么弹出提示框,如下图 点击确定,输入框自动清空非数字的输入,并且自动获得焦点,如图: 实现方案: 实现的想法: 给输入框添加一个 input 事件,给输入框绑 ...

  4. UDoc(云平台企业应用级 文档管理产品)

    类型: 定制服务 软件包: integrated industry solution collateral 联系服务商 产品详情 解决方案 概要 为企业提供基于云平台企业应用级文档管理产品,尽可能最大 ...

  5. Azure降价辣么多,省下的预算该怎么花?

    那么 Azure 产品创新以及服务完善到底体现在何处呢?以下最新发布内容也许可以告诉你答案. ◆ ◆ ◆ Power BI Embedded 让应用中的数据更加生动 Microsoft Power B ...

  6. 2013应届毕业生各大IT公司待遇整理汇总篇(转)

    不管是应届毕业生还是职场中人,在找工作时都必然会对待遇十分关注,而通常都是面试到最后几轮才知道公司给出的待遇.如果我们事先就了解大概行情,那么就会在面试之前进行比较,筛选出几个心仪的公司,这样才能集中 ...

  7. LeetCode OJ Palindrome Number(回文数)

    class Solution { public: bool isPalindrome(int x) { ,init=x; ) return true; ) return false; ){ r=r*+ ...

  8. QR分解与最小二乘(转载自AndyJee)

    转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...

  9. IOS 解析XML数据

    ●  什么是XML ●  全称是Extensible Markup Language,译作“可扩展标记语言” ●  跟JSON一样,也是常用的一种用于交互的数据格式 ●  一般也叫XML文档(XML ...

  10. php一个类引用另一个类的方法的写法

    default.php: <?php namespace SiteInfo{ class Site{ var $url; var $title; function setUrl($par){ $ ...