一起学爬虫(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 梅开二度,猫眼票房!相关推荐

  1. 老司机带你学爬虫——Python爬虫技术分享

    什么是"爬虫"? 简单来说,写一个从web上获取需要数据并按规定格式存储的程序就叫爬虫: 爬虫理论上步骤很简单,第一步获取html源码,第二步分析html并拿到数据.但实际操作,老 ...

  2. 01-为什么要学爬虫-python小白爬虫入门教程

    学习目的以及需求 需求来自于:抓取的某个网站或者某个应用的内容,提取有用的价值 实现手段 模拟用户在浏览器或者应用(app)上的操作,实现自动化的程序 爬虫应用场景(利用爬虫能做什么?) 大家最熟悉的 ...

  3. python爬虫实战--爬取猫眼专业版-实时票房

    小白级别的爬虫入门 最近闲来无事,发现了猫眼专业版-实时票房,可以看到在猫眼上映电影的票房数据,便验证自己之前学的python爬虫,爬取数据,做成.svg文件. 爬虫开始之前 我们先来看看猫眼专业版- ...

  4. python爬虫阶段性总结和项目实操——爬取猫眼票房Top100

    本博客通过爬取猫眼票房Top100来简要复习一下网页的HTML获取(requests库)解析(Beautiful Soup库)和数据保存(csv库)以及总结一下爬取过程中遇到的问题和解决方法 运行结果 ...

  5. 字体反爬之猫眼票房爬虫python

    编译环境:win10+python3.6+pycharm2017 目标:获取猫眼票房的电影名称和票房数据 目标网址:https://piaofang.maoyan.com/?ver=normal 网址 ...

  6. 一起学爬虫(Python) — 20 微信公众平台

    微信公众平台 - 模拟登陆 前言 微信公众平台 为什么要选择她 了解她 深入她 事后 夸奖粉丝 前言 年轻人,进来学自动化 如果你是刚来的呢,不想手动给小泽全部点上赞,也没关系,可以选择去上面的链接里 ...

  7. 路飞学城-Python 爬虫实战密训-第 1 章

    本节学习体会: 鸡汤心得: 1.时代发展太快,要不断学习新东西,武装自己,才能跟得上时代的潮流,不然就是面临被pass的命运 2.要看清楚趋势,不要闭门造车 3.学习编程语言就跟学英语一样,方法很重要 ...

  8. python初学者web还是爬虫-还在纠结学爬虫还是数据分析,不如看看这篇文章

    原标题:还在纠结学爬虫还是数据分析,不如看看这篇文章 身为职场人,收集上万条表格数据做商业分析,裁剪上千张图片,发送数百封邮件...这些都是经常会遇到的场景.我一直期待能有个工具解放我,直到我遇到了P ...

  9. python好学嘛-爬虫Python入门好学吗?学什么?

    爬虫Python入门好学吗?学爬虫需要具备一定的基础,有编程基础学Python爬虫更容易学.但要多看多练,有自己的逻辑想法.用Python达到自己的学习目的才算有价值.如果是入门学习了解,开始学习不难 ...

最新文章

  1. 样式集(10) - 滑动删除功能实现,VUE完整源码附效果图
  2. intellij中的 iml文件与web.xml 文件分别是干什么的
  3. 误入人体的海洋细菌,能轻易吞噬你的肢体乃至生命
  4. UITableView优化
  5. 05Hibernate基本配置
  6. 易语言单窗口单ip软件源码_游戏工作室如何防封?游戏账号和IP被封的解决方法...
  7. 3.1.3 覆盖与交换
  8. 免费报名 | 智源论坛:智能处理器探索,AI技术前沿精粹尽览
  9. #189 stat(动态规划)
  10. “约见”面试官系列之常见面试题第十一篇之canvas(建议收藏)
  11. vbs读取服务器上的txt文件,VBS读写txt文件常用方法
  12. 基于JAVA+Servlet+JSP+MYSQL的在线鲜花商城系统
  13. NYOJ题目37-回文字符串
  14. 2018年最令人惊讶的WordPress统计数据
  15. 服务器芯片封装,【芯极速】干货|一文看懂集成电路芯片封装及芯片组!
  16. gsp计算机管理系统,速拓医药GSP管理系统pc版
  17. Qt播放常见视频格式的方法
  18. 记java的那些编辑器的故事之凌嘉文+李晓彤-结对编程
  19. 数字电路设计总结(一):组合逻辑和同步时序设计
  20. 微信邮箱是什么?微信邮箱怎么注册申请,微信邮箱怎么登陆?

热门文章

  1. nvme分区选mbr还是guid_一学就会的gpt分区安装win10系统教程_win10教程
  2. 如何选择合适的网络备份软件
  3. 微信小程序文件下载两种方式
  4. 跨域window.opener
  5. 比羊了个羊更时间刺客的,原来是它?
  6. AOP In Spring With LTW
  7. qt信号与槽连接的书写规范
  8. 从调试数据分析USB通信协议——USB存储介质【U盘】(二)
  9. java 查询最长连续天数util
  10. canvas保存到本地图片三种方法