python爬虫:爬取猫眼TOP100榜的100部高分经典电影
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部高分经典电影的更多相关文章
- 【爬虫】-爬取猫眼TOP100
原文崔庆才<python3网络爬虫实战> 本文为自学记录,如有侵权,请联系删除 目标: 熟悉正则表达式,以及爬虫流程 获取猫眼TOP100榜单 1.网站分析 目标站点为http://www ...
- Python 爬取 猫眼 top100 电影例子
一个Python 爬取猫眼top100的小栗子 import json import requests import re from multiprocessing import Pool #//进程 ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- 用Python爬虫爬取广州大学教务系统的成绩(内网访问)
用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...
- 使用Python爬虫爬取网络美女图片
代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...
- Python爬虫|爬取喜马拉雅音频
"GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...
- python爬虫爬取内容中,-xa0,-u3000的含义
python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310
- Python爬虫爬取全书网小说,程序源码+程序详细分析
Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...
- python爬虫—爬取英文名以及正则表达式的介绍
python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一. 爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...
随机推荐
- Spring Bean相互依赖问题
如果是通过get,set 注入就不会有问题 如果是通过构造函数注入,SPRING就会报循环引用注入出错 循环依赖——在采用构造器注入的方式配置bean时,很有可能会产生循环依赖的情况.比如说,一个类A ...
- maven配置好了之后再次开机找不到命令
问题: 昨天还运行的好好的,今天突然又报错了, mvn不是内部或外部命令,也不是可运行程序或批处理文件 原因: 环境配置问题,windows7和windows10稍微有一点不一样,对照下面配置看哪里不 ...
- mysql-查询的案例
查询每个专业的男生人数和女生人数分别是多少 #方式一: select count(*) 个数,sex,majorid from student group by sex,majorid; #方式二: ...
- 在快速自定义的NopCommerce中使用实体框架(EF)代码优先迁移
我看到很多nopCommerce论坛的用户问他们如何使用Entity Framework(EF)代码优先迁移来自定义nopCommerce,添加新的字段和entites核心.我实际上在做nopComm ...
- Native Method
While a 100% pure Java solution is nice in principle, realistically, for an application, there are s ...
- ansible使用9-Playbooks: Special Topics
Accelerated Mode port 5099 持续连接30min --- - hosts: all accelerate: true tasks: - name: some task comm ...
- 花3分钟了解下C/C++中的函数可变参简单实现
1.可变参函数的原理 C/C++函数的参数是存放在栈区的,并且参数的入栈是从参数的右边开始,即最后一个参数先入栈,而第一个参数最后才入栈,所以,根据栈的后进先出性质,函数总能找到第一个参数.所以,可变 ...
- window下mycat要放在根目录下
原理文档没有跟我开玩笑呢? 建议放在盘符根目录下 ,无视的我,检查了多遍jdk环境,检查了多遍bat文件内容,仍然没有解决 找不到或无法加载主类 直到我乖乖的把目录放跟盘符才解决,心好累= =! 可能 ...
- jrtplib源码分析 第一篇 jthread的编译与分析
第一篇 jthread的编译与分析 jrtplib代码依赖库jthread,因此先从jthread开始jrtplib的学习.首先从以下链接下载jthread的源代码http://research.ed ...
- Python-Django框架学习笔记——第一课:Hello World
Python Django 有诗云: 孤山寺北贾亭西,水面初平云脚低. 几处早莺争暖树,谁家新燕啄春泥. 乱花渐欲迷人眼,浅草才能没马蹄. 最爱湖东行不足,绿杨阴里白沙堤. 今天在信阳游玩,有幸来到信 ...