一起学爬虫(Python) — 19 年轻人,进来学自动化

今天我们要停下来

  • 回顾
    • xpath
      • 什么是xpath
      • 查帕斯的原理
      • 案例
  • 举一反三

回顾

鲁迅先生曾说过,学习要脚踏实地,要会举一反三!昨晚看了很多小伙伴的留言,深思良久,觉得应该放慢一点步伐,确实回头看的话,有很多地方没有细化的讲到,不过没关系,今天我们就来把前几天的小问题,灰都给扬喽。

xpath


点名这位小伙伴嗷,既然你诚心诚意的发问了,那我就大发慈悲的告诉你吧!(其实本来就打算后面详细讲的,hh)
小泽觉得通过实践来学习的效率,是远远比记笔记死记硬背要来的高的。

什么是xpath

查帕斯查帕斯查帕斯!
上一次我们是为什么要用到查帕斯(xpath)呢,因为我们要在返回来的一整个文档里找到我们要的那一部分的数据!
举个栗子,有很多小伙伴都喜欢往PP里面塞一些奇怪的东西,有的很粗,有的很大,还有的很长,经常进去之后就出不来了,可以理解为我们的工作就是找到那个奇怪的东西,并且把它拿出来!
如果放到以前,医学技术没有那么高深,可能就莫得办法了,解剖吧,生死听天由命。
但是现在高级了呀,x光哗的一下,就能精准定位,然后再定点取出来,越厉害的医院越能很轻松就给你取出来喽,不过大家还是最好不要乱塞东西嗷。

同样的,如果我们要从网页数据的茫茫标签中找到对的那个标签,就可以用查帕斯(xpath)这种简单方便快捷而且可以跨平台的高科技!
不要问查帕斯(xpath)到底是个啥,就像你塞进去那个东西,你会去研究它是怎么做的吗???

查帕斯的原理

假如你到医院去拍片子,是不是也要脱光光(不用)然后站在医生面前羞涩的被拍,然后医生再从羞涩的你的身体中的那些骨头和内脏里找到塞进去的那个东西的位置在哪里,对吧对吧。
同样的,我们的查帕斯也是把一整个网站放进来,然后查帕斯化,我们昨天说的是树化,想怎么说就怎么说,就是这么任性!
如果要说的专业一点就是实例化,实例化一个etree对象!
然后把需要被解析的页面放到这个etree对象里,还记得我们昨天是怎么做的吗,不记得了?罚你去操场跑一百圈!


直接给你找过来了!
看到了嘛,我们是先把页面整个数据text化之后交给了etree.HTML()
然后得到了我们的实例化的etree对象,起个名字叫tree。

接着就要从实例化了的etree对象中找我们要的部分,tree.xpath(‘xpath表达式’)
也就是说,只要能找到xpath表达式,我们就能精准定位到我们要的地方,难点就在我们要怎么去找xpath表达式啦,所以接下来就通过例子来让大家理解吧!

案例


来,我们打开bilibili,右键打开抓包工具。

看到抓包工具边角上的小箭头了嘛,那是一根神手指,真正的猛男,一根手指,就够了!
使用它,点击你想看的位置,就会跳到你要找的东西的标签那里,比如我们点个发蓝光的那个音乐吧!

铛铛裆!那么我们要怎么通过xpath表达式来获得音乐这个文本内容呢?
不要急,从头开始!

从图中我们可以看到,音乐这个文本内容在html标签下的body标签下的div标签下的div标签下的div标签下的div标签下的div标签下的div标签下的div标签下的span标签下的div标签下的第三个span标签下的div标签下的a标签下的span标签里!中间有几个div标签小泽可能迷糊了没输对,看划横线的位置就好了,那么这样分析完后要怎么写呢?
/html/body/div[2]/div/div[1]/div[3]/div/div[2]/span[3]/div/a/span/text()
注意缩进!如果开头是在一起的,就是同级,div[2]表示的是同级下第二个div,因为上面的svg标签里还有个div标签,注意不是从0开始哦!
/html就是我们的头头,要从头开始写嘛~
以此类推,大家慢慢琢磨一下,就会发现这其实就是一种笨方法,一个一个的找,跟查字典一样,先找到首字母,再……
那么有没有快捷的方法呢?肯定有呀!
//*[@id=“primaryChannelMenu”]/span[3]/div/a/span/text()

是不是短了很多~虽然没有上面的长了,但是不要怕,我们,短小精悍!
//就是不用从头开始,直接找我们指定的标签,一般都是通过class或者id去找,//*呢,就是小仙女懒得写标签的名字,只要id是后面那串字母就可以啦~
[@id=“primaryChannelMenu”]
注意喽,每一级都要用[]中括号括住,@后面跟id或者class或者其他标识,然后等号后面就不能再用我们爱用的单引号了,要用双引号!
/就是下一级
/span[3]/div/a/span/text()
下一级的第三个span标签里的第一个div里的第一个a里的span里的东西,我只要text的内容!
翻译过来大致就是上面的意思啦~
最后的text()就是取里面的文本内容,当然如果你想获取链接什么的,可以把text()换成@xxx,xxx就类似昨天的src,不多赘述啦~
赶紧去试一试,有木有效果!

我的是出来呢,你的呢?

# 导入模块
import requests
from lxml import etree
# 指定url
url = 'https://www.bilibili.com'
# 伪装头
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}
# 把获取请求和树化两步结合起来了
tree = etree.HTML(requests.get(url,header).text)
# 利用xpath表达式获取我们要的数据,注意返回的是个列表哦!
a = tree.xpath('//*[@id="primaryChannelMenu"]/span[3]/div/a/span/text()')
print(a)

到这里呢,你应该大致明白xpath到底是个什么东西了吧~
就像用扳手一样,再好用的扳手到了莽夫手里也只是杀人利器,所以我们才要学会去使用它,然后就知道如何才能塞进去还不会出不来了!

举一反三

今天,我们就要实践鲁迅先生的理论了!
随便找一个网站啊,我先去找找~

希望大家会希望呦~
这次我们就来爬取这个网站,相信对你来说已经没有什么难度了,但是我们是有目的的去爬的,练习查帕斯!
先做好准备工作:

import requests
from lxml import etree
url = 'https://www.qqtn.com/article/article_292075_1.html'
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
}

指定好url和header心里就会很安心也很踏实,接下来去做我们的大事吧!

通过分析我们发现,这些图片是在/html下的/body下的/div[5](第五个div)下的/div下的/div下的id为zoom的div里的p标签里!是一个列表哦。

# 获取网页数据
a = requests.get(url=url,headers=header).text
# 树化a
b = etree.HTML(a)
# //表示跳过开头,至于跳多少,都是可以的!直接@class="m_qmview"的div
# 要它下面的p标签,这里为什么不指定要第几个呢,因为我们要获取的是一个列表
# 也就是,我全都要!
# p后面跟的//就是中间如果有东西,直接跳过,只要p标签下
# 和p标签里面包括的标签里有src=这个东西,就把=后面的链接全部拿过来!
c = b.xpath('//div[@class="m_qmview"]/p//@src')
print(c)


小泽成功地拿到了我们要的每一张图片的网址,接下来就开始遍历,然后保存啦~

# 遍历c列表中的每一个图片网址
for i in c:# 二进制化数据(图片,视频,音乐都是要用二进制爬下来的哦) d = requests.get(i).content# 取名name = i.split('/')[-1]# 上下文管理器with open(name,'wb') as fp:fp.write(d)


不要忘了今天的主题哦,查帕斯!
希望大家都不要当舔狗,一起单身吧~
来,换个姿势~

虽然鲁迅先生说了举一反三,但是鲁迅说的不一定是对的,因为我累了。
所以说,现在越来越多的“人生道理”、“成功秘诀”也不一定是真的适合自己的,希望大家能做好自己,走好自己的路。
这里小泽给大家推荐一个爬虫交流群吧,没有广告,不存在卖课,只有苦逼的程序员~目前只有三个人,hhh

如果有想一起交流的小伙伴欢迎加进来哦~
如果你看到了这里,点个赞再走吧!!点赞数量到100,就更下一期哦!!

目前一共是65个,这个要求不过分叭~
那今天就写到这里喽,掰掰!!!

一起学爬虫(Python) — 06相关推荐

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

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

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

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

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

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

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

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

  5. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城-Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫:- 定义调度器- 定 ...

  6. python是什么意思中文、好学吗-爬虫Python入门好学吗?学什么?

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

  7. 从业老学姐Python经验分享,别再相信培训机构“爬虫好学”的鬼话了,少走弯路!

    嗨~我是小鱼 前言 相信很多小伙伴在学习编程时都会去网络上搜索资料,寻找一些前辈的学习方法.这样的开始未尝不可,但是,在搜索的过程中你会惊讶的发现,网络上铺天盖地的"三个月速成python& ...

  8. 一起学爬虫(Python) — 10

    一起学爬虫(Python) - 19 年轻人,进来学自动化 高效爬取美丽的图片 任务目标 任务流程 step1:复制 step2:粘贴 step3:重学异步 什么是异步 勤奋的小明 理解小明 理解~~ ...

  9. Python爬虫是个啥?学了Python爬虫有什么用?

    什么是Python爬虫 Python爬虫即使用Python程序开发的网络爬虫(网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.爬虫指一段自动抓取互联网信息的程序,从互 ...

最新文章

  1. 女博士生爱上中专男,父亲直言自己只能打50分,你怎么看恋人学历差距大?...
  2. Servlet/jsp和Action/jsp传值
  3. centos7 下通过nginx+uwsgi部署django应用
  4. 使用 function 构造函数创建组件和使用 class 关键字创建组件
  5. 罗永浩或将找陈冠希做代言人
  6. Android模拟器环境下SD卡内容的管理
  7. OpenCV版本与EmguCV版本匹配问题
  8. 一个有趣的Java编译问题
  9. QT5.13.1安装教程
  10. VSCode 花式玩法(摸鱼)了解一下
  11. 第1章 信息化和信息系统
  12. Android集成华为Push及注意事项
  13. python脚本编程:批量压缩图片大小
  14. 考研数学 第6讲 中值定理
  15. android 唤醒屏幕
  16. 在Kubernetes上安装Netdata的方法
  17. Mac苹果电脑如何输入表情符号?
  18. arduino灯带随音乐_【创客玩音乐】用灯带让音乐可视化
  19. 那一场呼啸而过的青春
  20. 苹果电脑win10蓝牙音响卡顿_解决Macbook Pro下Win10双系统蓝牙鼠标无法连接及卡顿...

热门文章

  1. 使用ISO文件搭建本地yum源
  2. 在服务器上搭建 Git仓库
  3. IDEA导入maven聚合项目
  4. 微信小程序开发教程!博卡君第二弹【微信小程序项目结构以及配置】
  5. linux lsmod(查看驱动模块)和 ls /dev(驱动设备)
  6. 【微信每日早安推送】
  7. Django中os.environ.setdefault(DJANGO_SETTINGS_MODULE, xxxx.settings)
  8. 利用Origin对曲线进行单线一或者多线段线性拟合
  9. Vim安装插件管理器Vundle
  10. Android 如何让你的App赚钱?