人生苦短,我用 Python

引言

各位同学大家好,好久不见(可能只有一两天没见:囧)~~~

先讲一件事情,昨天为啥没更新。

emmmmmmmmm,当然是因为加班啦,快到年底了,公司项目比较忙,最近的更新频率会有下降,请各位海涵。

废话不多说,开始今天的正题,从题目大家应该已经猜到了,小编要开始更新一个新的系列《小白学 Python 爬虫》,介于大家水平参差不齐,建议没有 Python 基础第一次接触的同学先看下小编之前更新的《小白学 Python 系列》,大致了解下 Python 的语法规则以及一些基础用法。

先自己吹一波水,这个系列小编计划做成长期更新系列,目前 Python 爬虫涉及到的第三方的类库有些多,还会有很多有关 web 编程方面的基础知识,因面向的群体主要是小白,这些内容都需要一一介绍,这会是一个大的系列。额,远超之前的 Python 基础。

额,忘了件事儿,再加一句题外话,最近公众号后台留言有点略多,很多同学的问题来不及回复就被留言冲的看不到了,这里请大家有问题可以添加小编的个人微信:allen_6174(放心加,这个是小编的个人生活微信号,和工作号是分开的)。

算了,顺便再打个广告吧:本爬虫系列文章后续将于公众号首发,个人博客站次日同步,第三方博客平台不定期同步,泥萌要不要关注我一下呢?

什么是爬虫?

不管是作为程序员还是小白,对爬虫这个词应该都不陌生,毕竟最近也发生了很多事情,很多人因为某些事情都进去了,具体情况我就不提了,容易被和谐。有想知道的同学可以翻一翻我之前公众号转的一篇文章《只因写了一段爬虫,公司200多人被抓!》。最近的网络报道此类的新闻还有很多。

在正式内容开始之前,提醒各位读者敬畏法律,热爱生活。

老规矩,先百度一波看看百度释义:

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

讲点接地气的就是我们把平时使用的网络看成是一张大蜘蛛网,每个站点看做是这张网上面的一个一个的节点,爬虫好比是一只蜘蛛,在这张网上面按照一定的或者已经设计好的路线,找到目标节点获取所需资源。

为什么使用爬虫

平时我们在上网的时候,看到一些感兴趣的网络资源,可以使用复制黏贴的方式将这些资源下载回来,比如看知乎的时候,一些回答很精彩的高赞回答,数据量小的时候,我们动动鼠标右键也就搞定了,但是如果这种数据量非常大,有时候可以大到超出你的想像,再用鼠标右键复制黏贴就有些捉襟见肘了。

这时,我们就需要勤劳的爬虫出马了,爬虫这种“生物”,可以全天候24小时候不间断工作,只需提供必要的网络和电力,就可以一直勤劳的工作下去,让你解放双手,再也无需人工使用 CV 大法了。

可以看出,爬虫非常适合帮我们做两类事情:

  • 大量数据的提取,在一定规则条件下。

  • 完全自动化,无需人工过多干预。

想像一下,当老板让你搜索某类信息时,写一只勤劳的小爬虫,自己在旁边泡上一杯清茶,拿起手机开始愉快的玩耍,时不时的看这只爬虫有没有完成工作,这场景一下让我想起了万恶的资本家压榨劳动力。

爬虫的核心

什么是爬虫,讲点通俗易懂的,爬虫就是爬取网页,从中按照一定规则提取信息,重复以上过程自动化重复完成的程序。

一只爬虫,第一件事情就是要爬取网页,这里主要是指获取网页的源代码。在网页的源代码里,会含有我们所需要的信息,而我们要做的事情就是从源代码中将这些信息提取出来。

我们请求网页的时候, Python 为我们提供了很多库来做这件事情,比如官方提供的 urllib ,以及第三方提供的 requests 、 Aiohttp 等。

我们可以使用这些库来发送 HTTP 请求,获取响应的数据,得到响应之后,我们只需要解析其中 body 部分的数据,就可以获得网页的源代码。

获取到源代码以后,我们接下来的工作就是解析源代码,从中提取出我们需要的数据。

提取数据最基础也是最常用的是使用正则表达式的方式的,但是这种方式比较复杂,也比较容易出错,不过不得不说,一个正则表达式写的非常厉害的人,完全用不着下面的这些解析类库,这是一个万能的方法。

悄悄的说一句,小编的正则表达式写的也不好,才会使用到这些由第三方提供的类库。

用于提取数据的类库有 Beautiful Soup 、 pyquery 、 lxml 等等。使用这些库,我们可以高效快速地从 HTML 中提取网页信息,如节点的属性、文本值等。

从源代码中提取到数据以后,我们会对数据进行保存,这里的保存形式多种多样,可以直接保存成 txt 、 json 、 Excel 文件等等,也可以保存至数据库,如 Mysql 、 Oracle 、 SQLServer 、 MongoDB 等等。

抓取的数据格式

一般而言,我们抓取到的都是 HTML 的网页源代码,这个是我们看得到的、常规的、直观的网页信息。

但是有些信息,并不是直接和 HTML 一起返回至网页的,会存在各种各样的 API 接口,这种接口返回的数据现在大多数是 JSON 的格式,也有一些会返回 XML 的数据格式,还会有一些个别的奇葩的接口直接返回程序猿自定义的字符串。这种 API 数据接口就需要具体问题具体分析了。

还有一些信息,比如各大图片站、视频站(如抖音、 B站),我们想要爬取的信息是图片或者视频,这些信息是已二进制的形式存在的,我们需要将这些二进制的数据爬取下来再进行转储。

此外,我们还能抓取到一些资源文件,如 CSS 、 JavaScript 等脚本资源,有的还会有一些 woff 等字体信息。这些信息是一个网页组成不可或缺的元素,只要浏览器能访问到的,我们都可以将其爬取下来。

现代前端页面爬取

今天核心内容来了!!!

很多时候,我们使用 HTTP 请求库爬取网页源代码时,爬取到的信息和我们在网页上看到的信息完全不一样,只有短短的几行。

这是因为最近这几年,前端技术突飞猛进,大量的采用前端模块化工具来构建前端页面,比较常用的框架有 Vue 、 React 等等。

导致我们获取到的网页只有一个空壳子,例如这种:

<html lang="en" style="background-color: #26282A; height: 100%"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no"><link rel="icon" href="favicon.ico"><title>演示项目title>head><style>html,body,#app {height: 100%    }style><body><noscript><strong>We're sorry but xxxxxx doesn't work properly without JavaScript enabled. Please enable it to continue.strong>noscript><div id="app">div><script src=/js/chunk-vendors.84ee7bec.js>script><script src=/js/app.4170317d.js>script>body>html>

代码来源是博主平时做的一些小东西,其中博主已经省略大量引入的 JavaScript。

body 节点里面只有一个 id 为 app 的节点,但是需要注意在 body 节点的最后引入了 JavaScript 文件,它们负责整个网页的渲染。

在浏览器打开这个页面后,首先会加载这个 HTML 的内容,接着会发现有 JavaScript 的脚本文件加载,获取到这些脚本文件后,开始执行其中的代码,而 JavaScript 脚本文件则会修改整个页面的 HTML 代码,向其中添加节点,从而完成整个页面的渲染。

但是当我们使用请求库去请求这个页面的时候,只能获得当前的 HTML 的内容,它并不会去帮我们获取这个 JavaScript 脚本文件并且帮我们执行这个脚本文件渲染整个 HTML DOM 节点,我们当然也就看不到浏览器当中看到的内容。

这也解释了为什么有时我们得到的源代码和浏览器中看到的不一样。

当然,遇到这种情况也不要慌,我们还可以使用Selenium、Splash这样的库来实现模拟浏览器中的 JavaScript 渲染。

后面,我们会慢慢聊这些内容,本文主要先帮各位同学对爬虫有一个基础的了解,方便后续的学习。

参考:

https://cuiqingcai.com/5484.html

爬虫取中间文本_零基础学 Python 爬虫 I:了解爬虫基础相关推荐

  1. 0基础学python看什么书-0基础学Python入门书籍应该看什么?

    0基础学Python入门书籍应该看什么?Python 对不少人来说是谜一样的东西不知道如何下手.从何处下手,找了很多资源几个月过去了学习陷入换乱,没没能入门Python开发.出现这种情况大多是因为没有 ...

  2. 爬虫取中间文本_一线大厂爬虫工程师给初学者的 5 个建议

    爬虫是当今互联网使用非常广泛的技术之一,现已应用于金融.房产.贸易与科技等诸多领域.无论是大数据计算.数据分析还是机器学习,都离不开爬虫.爬虫工作在很多时候是企业业务开展的基础与主线,将爬取内容进行清 ...

  3. 爬虫取中间文本_小小爬虫批量抓取微信推文里的图片

    哈喽,大家好,今天给大家分享一个特别特别小的爬虫案例! 爬取微信推文中的图片!!!! 有人说,这有啥用,,,,万一人家推文是放的是以图片的方式放的某个PPT的内容呢,你想把它弄下来,咋整,就是爬取啦. ...

  4. 爬虫取中间文本_【实战No.2】1小时打造你自己的网络爬虫

    新年好 爬虫离我们生活很近,诺基亚时代正是爬虫的帮助才成就了那么多网络小说.同时,它也是一门很简单的技术,但可能涉及到编程,很多朋友就认为学之不易. 前天David来南京"跨年", ...

  5. 零基础学Python(第三章 基础语法)

    本套学习内容共计[22]个章节,每个章节都会有对应的从0-1的学习过程详细讲解,希望可以给更多的人提供帮助. 开发环境:[Win10] 开发工具:[Visual Studio 2019] 1.第一个 ...

  6. 零基础学python全彩版实战答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

  7. 零基础学python全彩版答案-零基础学Python(全彩版)

    商品描述: 本店出售的图书均是正版二手书,有一些笔记划线,基本是六-九品新左右,基本都没有光盘.介意者请提前咨询客服.本店所有书籍,因买家导致退货退款的,发出运费参照不包邮运费模板由买家承担.如果签收 ...

  8. 0基础学python看什么书-零基础学python编程需要看什么书?

    原标题:零基础学python编程需要看什么书? 随着互联网迅速发展,python也呈现出水涨船高的态势.近年来,python在编程语言中一直名列前茅.编程初学者纷纷选择Python作为第一语言.Pyt ...

  9. 零基础学python书籍-图书推荐:《零基础学Python(全彩版)》

    原标题:图书推荐:<零基础学Python(全彩版)> 书皮 书皮 内容简介 <零基础学 Python>是针对零基础编程学习者研发的 Python 入门教程.从初学者角度出发,通 ...

最新文章

  1. 神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入
  2. linuxDNS服务器的部署
  3. python 循环中报错 继续运行_python中列表删除和多重循环退出
  4. ST表 (模板) 洛谷3865
  5. LeeCode_MultiplyStrings
  6. python学习详解_深入解析Python小白学习【操作列表】
  7. iOS-----使用NSURLConnection
  8. linux which
  9. luogu P4240 毒瘤之神的考验(莫比乌斯反演+递推前缀和+数论分块)
  10. linux搭建虚拟化平台报告,部署KVM虚拟化平台------搭建(示例代码)
  11. nginx程序访问linux任意目录,通过nginx访问linux目录
  12. 最新黑客攻防实战从入门到精通(第二版)_学习笔记(一)
  13. raw socket
  14. android ntp服务器配置
  15. 《刘毅突破英文词汇3000》Vocabulary fundamental 分课音频 下载
  16. git format-patch命令介绍
  17. python哪个机构教的好_学Python去哪家机构比较好?老男孩教育怎么样?
  18. RocketMQ读写队列
  19. python通过cookie跳过登录
  20. 使用fiddler实现手机抓包

热门文章

  1. 百度2013校园招聘笔试题(欢迎高手给予指点)
  2. 海尔台式计算机配置,海尔台式机电脑怎么设置u盘启动_海尔电脑如何设置usb启动...
  3. SpringBoot 系列教程(二十三) :使用@Order注解调整配置类加载顺序
  4. SQLite基本用法
  5. 【信号与系统】如何得到原始图片的频谱图?(Matlab)
  6. 计算机滴滴响重启,刚刚电脑滴滴的响一开始有节奏的响,后面就滴滴滴的一直响了几分钟,然后自动关机重启了,是怎么回事?!...
  7. matlab抽样定理的仿真,MATLAB实现抽样定理探讨及仿真
  8. 看完这篇 教你玩转渗透测试靶机vulnhub——FunBox4(CTF)
  9. 你来时我当你不会走,你走了我当你没来过
  10. 如何运用验证码识别软件才能让工作环境更安全