一起学爬虫(Python) — 16 梅开二度,猫眼票房!
一起学爬虫(Python) — 19 年轻人,进来学自动化
前言
咳咳,本来今天是没想更新的,因为我发现如果不更新涨粉速度比日更要快的多,是的你没听错,经过一天两天的咕咕咕,阅读量是蹭蹭蹭的上去了。
这到底是为什么呢???
让我想起一句话,有的人,死了比活着有用。
也许我放鸽子比日更有用叭。
快用你的点赞安慰一下受伤的小泽吧!!!
进入主题
既然我是不想更新的,那么我为什么要更新呢?
因为我不想,所以我想,懂的都懂。
好啦,其实是因为某位小粉丝在背地里对小泽做了这样的事…
那我能说不吗?
当然不可以啦!
所以!我们今天就来,爬 猫 眼 票 房 !
亵玩焉
俗话说得好,犹抱琵琶半遮面,只可远观而不可亵玩焉,今天我们就要玩一玩这个猫眼票房,看看他到底是男是女,是大是小,是深是浅,冲冲冲!
神奇的传送门
大家快进到我的洞里面鸭
可以看到,这位小粉丝想要的前100数据应该就是…
往下拉,拉到最下面:
发现有分页,一页是10部,一共是10页,那么一共是多少部电影呢?
10x10=100,没错,小伙伴们算对啦!一共是100部电影。
因为100部电影 = 前100部电影的数量,
所以我们找对了!
成功水了一波字数。
接下来就一一看看每一页的url有没有规律吧~
第一页:
第二页:
第三页:
第N页:
一共是十页,所以我们循环十次,分别请求每一页。
直接上代码!
# 导入模块和包
import requests
from lxml import etree
然后指定我们的url,因为这里的url的规律已经被我们找到啦,所以我们就用拼接的形式组成:
url_low = 'https://maoyan.com/board/4?offset='
因为这个url是不完整的,所以我们叫它lowのurl!
注意注意注意,这个url是不完整的!
接下来我们用循环拼接出10个完整的url:
for i in range(10):# 如果不懂i是什么可以先把i打印一下# print(i)url = url_low + str(i*10)print(url)
至于为什么要给i乘上10,不要忘了我们找到的规律鸭!(n-1)*10
但是在python中呢,往往是从0开始的,所以也就不用减1了。
至于str,是为了把int类型的整数转换成str类型的字符串,才能和很lowのurl进行拼接。
然后print一下每一个url,发现都没有毛病对吧:
如果有,那一定是你没有点赞。
既然拿到了所有的url,就让我们开始…
等等,不要忘了headers!
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
接下来,开始我们的伟大计划吧!
乌拉!!!
for i in range(10):# 如果不懂i是什么可以先把i打印一下# print(i)url = url_low + str(i*10)# print(url)# 请求这次循环对应的页面res = requests.get(url=url,headers=headers).text# 树化这次循环对应的界面tree = etree.HTML(res)# 在这次循环对应的界面中找数据tree.xpath('')
可以看到,上面代码里的xpath里面我们还没有写东西,为什么呢?
一起去找呗~
可以看出来,每个页面里的10个电影里的数据都是存放在一个dl的列表里的,每一个都是弟弟。
那我们的xpath就可以先获取这个dl的列表,然后循环出这10个电影对吧,先获取列表嘛,不然你直接获取电影只能获取一个的。
# 翻译过来呢,就是html下面的body下面的第四个div
# 下面的div下面的div下面的第一个div下面的dl下面的所有dd
dd = tree.xpath('/html/body/div[4]/div/div/div[1]/dl/dd')
然后打印一下dd,看一下有数据没有哈。
可以看到是有的,而且每个页面里面都是有10个电影的,但是会有些空列表。
当然如果你再运行一遍可能就会发现全都是空列表了,这说明我们不能访问的太频繁!
那就设置一个休眠呗,每隔多少秒访问一次。
import time
time.sleep(0.5)
也就是这样子哦,别搞错了。
这下就没问题了。
那我们继续呗~
现在我们得到了每一个页面的dd列表,dd列表里有我们要的详细信息,那我们只要处理好一个循环里的dd列表,其他循环也就自己处理好了吧。
# 循环遍历dl列表里的每一个ddfor z in dd:# 排名,爬取出来是个列表,所以用[0]top = z.xpath('./i/text()')[0]name = z.xpath('./a/@title')[0]print('排名:',top,'名字:',name)# 防止我们太快猫眼受不了time.sleep(0.5)
你以为到这里就结束了吗???
no no no no !
细!
跟大家说一下为什么top和name的xpath要那么写:
首先我们已经爬下来了整个dl列表对吧,然后我们又遍历这个列表,单独对每一个dd做处理,所以这个dd已经是树化了的对吧,因为他的父级就是树化的数据,就不用再去树化了,可以直接xpath了。
那么xpath里面的’./’,就是指的’/html/body/div[4]/div/div/div[1]/dl/dd/’
也就是说是在重写了一遍前面的,只不过用 ./ 给代替了,然后就在dd下面找呗:
可以看到dd下面的i标签里面就有我们要的排名吧,那就直接text(),获取这个标签下面所有的文本内容。
然后dd标签下面的a标签里有title吧,dd标签下面的div标签下面的div标签下面的div标签下面的第二个p标签里有主演吧,第三个p标签里有上映时间吧,懂了吧~
结束!
好的,本来想弄个进程池,让大家再熟悉一下怎么提高效率的,结果这个网站不能太快哈,那就可惜了。
大家早点睡,点个赞,长命百岁!
还有能找到女朋友!!!
一起学爬虫(Python) — 16 梅开二度,猫眼票房!相关推荐
- 老司机带你学爬虫——Python爬虫技术分享
什么是"爬虫"? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫: 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据.但实际操作,老 ...
- 01-为什么要学爬虫-python小白爬虫入门教程
学习目的以及需求 需求来自于:抓取的某个网站或者某个应用的内容,提取有用的价值 实现手段 模拟用户在浏览器或者应用(app)上的操作,实现自动化的程序 爬虫应用场景(利用爬虫能做什么?) 大家最熟悉的 ...
- python爬虫实战--爬取猫眼专业版-实时票房
小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...
- python爬虫阶段性总结和项目实操——爬取猫眼票房Top100
本博客通过爬取猫眼票房Top100来简要复习一下网页的HTML获取(requests库)解析(Beautiful Soup库)和数据保存(csv库)以及总结一下爬取过程中遇到的问题和解决方法 运行结果 ...
- 字体反爬之猫眼票房爬虫python
编译环境:win10+python3.6+pycharm2017 目标:获取猫眼票房的电影名称和票房数据 目标网址:https://piaofang.maoyan.com/?ver=normal 网址 ...
- 一起学爬虫(Python) — 20 微信公众平台
微信公众平台 - 模拟登陆 前言 微信公众平台 为什么要选择她 了解她 深入她 事后 夸奖粉丝 前言 年轻人,进来学自动化 如果你是刚来的呢,不想手动给小泽全部点上赞,也没关系,可以选择去上面的链接里 ...
- 路飞学城-Python 爬虫实战密训-第 1 章
本节学习体会: 鸡汤心得: 1.时代发展太快,要不断学习新东西,武装自己,才能跟得上时代的潮流,不然就是面临被pass的命运 2.要看清楚趋势,不要闭门造车 3.学习编程语言就跟学英语一样,方法很重要 ...
- python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章
原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...
- python好学嘛-爬虫Python入门好学吗?学什么?
爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...
最新文章
- 样式集(10) - 滑动删除功能实现,VUE完整源码附效果图
- intellij中的 iml文件与web.xml 文件分别是干什么的
- 误入人体的海洋细菌,能轻易吞噬你的肢体乃至生命
- UITableView优化
- 05Hibernate基本配置
- 易语言单窗口单ip软件源码_游戏工作室如何防封?游戏账号和IP被封的解决方法...
- 3.1.3 覆盖与交换
- 免费报名 | 智源论坛:智能处理器探索,AI技术前沿精粹尽览
- #189 stat(动态规划)
- “约见”面试官系列之常见面试题第十一篇之canvas(建议收藏)
- vbs读取服务器上的txt文件,VBS读写txt文件常用方法
- 基于JAVA+Servlet+JSP+MYSQL的在线鲜花商城系统
- NYOJ题目37-回文字符串
- 2018年最令人惊讶的WordPress统计数据
- 服务器芯片封装,【芯极速】干货|一文看懂集成电路芯片封装及芯片组!
- gsp计算机管理系统,速拓医药GSP管理系统pc版
- Qt播放常见视频格式的方法
- 记java的那些编辑器的故事之凌嘉文+李晓彤-结对编程
- 数字电路设计总结(一):组合逻辑和同步时序设计
- 微信邮箱是什么?微信邮箱怎么注册申请,微信邮箱怎么登陆?