首页 > 经验 > 关键词 > 网络爬虫最新资讯 > 正文

用案例让你一文搞懂python网络爬虫

2019-09-04 09:03 · 稿源:数据EDTA公众号

黑客 代码 安全漏洞 程序员

声明:本文来自于微信公众号  数据EDTA(ID:livandata),作者: livan,授权站长之家转载发布。

很久以前写了一篇爬虫的文章,把它放在CSDN上(livan1234)没想到点击量竟然暴涨,足以看到大家在数据获取方面的需求,爬虫技术现在已经非常普遍,其用途也非常广泛,很多牛人在各个领域做过相关的尝试,比如:

 1)爬取汽车之家数据,利用论坛发言的抓取以及NLP,对各种车型的车主做画像。

2)抓取各大电商的评论及销量数据,对各种商品(颗粒度可到款式)沿时间序列的销量以及用户的消费场景进行分析。

3)还可以根据用户评价做情感分析,实时监控产品在消费者心目中的形象,对新发布的产品及时监控,以便调整策略。

4)抓取房产买卖及租售信息,对热热闹闹的房价问题进行分析。

5)抓取大众点评、美团网等餐饮及消费类网站:各种店面的开业情况以及用户消费和评价,了解周边变化的口味,所谓是“舌尖上的爬虫”。以及各种变化的口味,比如:啤酒在衰退,重庆小面在崛起。

6) 58 同城等分类信息网站:抓取招商加盟的数据,对定价进行分析,帮助网友解惑。

7)拉勾网、中华英才网等招聘网站:抓取各类职位信息,分析最热门的职位以及薪水。

8)挂号网等医疗信息网站:抓取医生信息并于宏观情况进行交叉对比。

9)应用宝等App市场:对各个App的发展情况进行跟踪及预测。(顺便吹一下牛,我们这个榜单很早就发现小红书App的快速增长趋势以及在年轻人中的极佳口碑)

10)携程、去哪儿及 12306 等交通出行类网站:对航班及高铁等信息进行抓取,能从一个侧面反映经济是否正在走入下行通道。

11)雪球等财经类网站:抓取雪球KOL或者高回报用户的行为,找出推荐股票

12) 58 同城二手车、易车等汽车类网站:什么品牌或者型号的二手车残值高?更保值?反之,什么类型的贬值较快?- 二手车,找出最佳的买车时间以及最保值的汽车。

13)神州租车、一嗨租车等租车类网站:抓取它们列举出来的租车信息,长期跟踪租车价格及数量等信息。

14)各类信托网站:通过抓取信托的数据,了解信托项目的类型及规模。其实还有很多数据,不一一列举了。

上次的文章是在讨论移动端的数据获取:点此查看

本文对爬虫做一个全面的总结,不一定包治百病,但是能治好大部分疾病,希望能够对大家有所帮助:

1、 urllib 库:这是一个在爬虫领域绕不开的库,他支持 http 的爬取,几乎可以取到方方面面的内容。

以下面的豆瓣案例做一个简要的解释:

豆瓣小案例:

image.png

常用函数:

image.png

2、超时设置:

由于网络速度或者对方服务器的问题,我们爬取一个网页的时候,都需要设置时间,我们访问一个网页,如果该网页长时间未响应,那么我们的系统就会判断该网页超时了,即无法打开该网页。

有时候,我们需要根据自己的需求,来设置超时的时间值,比如:有些网站会反应快,我们希望 2 秒种没有反应则判断为超时,那么此时,timeout= 2 即为设置方式,即在 urlopen 中加入 timeout 参数。再比如,有些网站服务器反应慢,那么我们希望 100 秒没有反应,才判断超时,此时的timeout即设置为100,接下来为大家讲解爬虫超时的设置。

image.png

3、自动模拟 Http 请求:

客户端如果要与服务器端进行通信,需要通过http进行请求,http请求有很多种,我们在此会讲post与get两种请求方式,比如登录、搜索某些信息的时候会用到。

1)处理 get 请求:

image.png

2)理 post 请求:

所谓post请求即为 HTML 的 form 中存在 method=“post”的标签,如下文:

<body>

<form action=””,method=”post”>

姓名:<input name=”name” type=”text”/><br>

密码:<input name=”pass” type=”text”/><br>

<input name=”” type=”submit” value=”点击提交”>

</body>

在新浪 login.sina.com.cn 中即可看到,form 为 post 方式。我们只需要 form 表单中的 name 属性即可。

如下图:

image.png

4、爬虫的异常处理:

爬虫在运行的过程中,很多时候都会遇到这样或那样的异常。如果没有异常处理,爬虫遇到异常时就会直接崩溃停止运行,下次再次运行时,又会重头开始,所以,要开发一个具有顽强生命力的爬虫,必须要进行异常处理。

异常处理主要是为了增强代码的稳定性。

    两者都是异常处理的类,HTTPError是URLError的子类,HTTPError有异常状态码与异常原因,URLError没有异常状态码,所以,在处理的时候,不能使用URLError直接替代HTTPError。如果要替代,必须要判断是否有状态码属性。

接下来我们通过实战讲解:

image.png

具体的实战为:

image.png

5、爬虫的伪装技术:

浏览器伪装技术原理:

我们可以试试爬取csdn博客,我们发现会返回403,因为对方服务器会对爬虫进行屏蔽。此时我们需要伪装成浏览器才能爬取。

浏览器伪装我们一般通过报头进行,接下来我们通过实战分析一下。

image.png

6、新闻网站爬取:

需求:将新浪新闻首页(http://news.sina.com.cn/)所有新闻都爬到本地。

思路:先爬首页,通过正则获取所有新闻链接,然后依次爬各新闻,并存储到本地。

image.png

7、爬虫防屏蔽手段之代理服务器:

image.png

如何做代理:

image.png

8、图片爬虫实战: 在浏览器爬取时,有时不同的浏览器会有不同的查询结果,解析出不同的源码。

首先在“审查元素”中确定元素的重点字段是哪些,然后再在“源码”中查找对应的图片位置,确定图片 url 的规则。

#!/usr/bin/env python # _*_ UTF-8 _*_

image.png

在源码解决不了的情况下,需要进行抓包。作业:千图网的爬取(可以通过调试找到报错原因):

image.png

9、抓包分析实战(一) 

获取淘宝的评论信息、腾讯的娱乐新闻信息等需要抓包分析。如何抓取 https 的数据包以及腾讯视频的评论。

TextView:显示返回的信息;

通过 fiddler 找到含有评论的网址,复制出对应的网址,观察网址的规则。

设置完 fiddler 之后,点击要爬取的页面,回到 fiddler 中,确定有 js 内容的链接:

对应的网址为:(点此)

然后确定其中的 itemId 等字段的内容,其中的部分内容未必有用处,可以直接删除,比如 上面 url的 ua 字段。

如果要抓取 https 的数据:

Fiddler 默认只能抓取 HTTP 协议的网页,不能抓取 HTTPS 协议的网页,而我们很多时候,都需要抓 HTTPS 协议的网页,比如抓淘宝数据等。今天,韦玮老师会为大家讲解如何使用 Fiddler 抓取 HTTPS 协议的网页。

打开 Fiddler,点击“Tools--FiddlerOptions--HTTPS”,把下方的全部勾上,如下图所示:

然后,点击 Action,选择将CA 证书导入到桌面,即第二项,导出后,点击上图的 ok 保存配置。

然后在桌面上就有了导出的证书,如下所示:

随后,我们可以在浏览器中导入该证书。我们打开火狐浏览器,打开“选项--高级--证书- -导入”,选择桌面上的证书,导入即可。随后,Fiddler 就可以抓 HTTPS 协议的网页 了。如下图所示。

抓取腾讯视频的评论:

下图为带评论的 js 文件(从 fiddler 中获取):

其中有多个字段,commentid 等,在点击“加载更多”时,commentID 会发生变化,在第一个url 的源码中会找到下一个评论 url 的地址,找到 last 字段,即为下一个 url 的commentid, 以此来构造下一个 url。

image.png

10、微信爬虫实战:

如何解决微信的限制?

image.png

image.png

image.png

11、多线程爬取实战 糗事百科的代码:微信爬虫的爬取依然是使用浏览器,即在搜狗浏览器上使用微信网页版,然后编辑这个页面的 url,以获取内容。

image.png

将此程序改为多进程为:

image.png

image.png

  技术总是在不停的进步的,现在的这些爬虫技术一定不能适应所有的环境,如有各位意犹未尽,请关注我的公众号:livandata

image.png

  • 相关推荐
  • 大家在看
  • Python取代Excel?风变编程带你了解如何更好地学Python!

    当前最简单、最流行的编程语言是什么?是Python。最近,谷歌公布的编程语言流行指数显示,Python目前仍然是全球范围内最受欢迎的技术语言。而得益于简洁、易读、易维护等特点,Python可广泛运用于数据分析、人工智能、爬虫、运维、测试、图像识别、机器学习等领域,在日常数据分析方面,甚至已有“Python取代Excel”的说法。那么,Python是否真的有这么牛?接下来,风变编程就带你了解一波。“Python已经取代了Excel”今年3月,日?

  • Python 和 Go 成为年度最受欢迎的黑客工具榜首

    网络安全公司 Imperva Cloud WAF 近期分享了其在 2019 年一年内针对网络安全事件的观察。对数据进行聚类分析后,他们得到了如下结论:

  • 报告:JavaScript为最常用整体编程语言 Python超过Java

    在过去的 12 个月中,Python在使用的编程语言列表中已经超过了Java,它也是被研究最多的语言。报告称,在过去的 12 个月里,30%的受访者开始或继续学习Python,甚至比去年还要多。

  • 云计算开发学习笔记:Python3注释

    <p>大家在学习各种编程语言的时候都会在代码里面添加一些注释,这个也是为了方便日后对代码的查找和修改,各种编程语言的注释方式略有不同,Python3语言也一样有自己的注释方式,下面我们来了解一下都有哪几种。</p><p>确保对模块

  • 云计算开发学习笔记:Python3运算符

    首先我们来了解下什么是Python的运算符? 举个简单的例子 3+6=9 。例子中,3和6被称为操作数,"+" 称为运算符。Python中的运算符大部分与C语言的类似,但也有很多不同的地方。这里就大概地罗列一下Python3中的运算符。Python语言支持的运算符类型有以下几种:算术运算符,比较运算符,赋值运算符,逻辑运算符,位运算符,成员运算符,身份运算符,运算符优先级。Python算术运算符以下假设变量a为10,变量b为21:Python比

  • Java已被超越?Python当道,风变编程带你化身编程高手

    在程序员中,一直流传着“Python除了不会生孩子,什么都会”的传说。作为人工智能时代最重要的脚本语言之一,Python现在已经逐步占领统计学、机器学习、爬虫、图形处理、软件和游戏开发、人工智能等多个领域,且都有突出表现。可以说,在众多编程语言中,python如今已经杀出重围,从容超越Java和Javascript,化身程序员必备的编程利器之一。目前,国内外许多公司都已使用Python,如:YouTube、豆瓣、知乎、Google、百度、腾讯、美?

  • 做客李晨nic淘宝直播 胡海泉胡彦斌带货开课吧Python

    自李佳琦、薇娅掀起直播带货浪潮后,当红明星、商界巨头等各路大咖纷纷走进直播间做“带货网红”。2020年是直播电商全面崛起之年,越来越多的企业踏入了直播营销这个新阵营,今年本就发展迅猛的在线教育行业自然也紧跟趋势。5月30日,开课吧Python小课陈列在李晨nic淘宝直播间中,与Vipkid、元气森林、御泥坊等品牌产品一起展出供售。当晚,慧科集团董事长、开课吧总裁方业昌博士做客李晨直播间,二胡组合胡彦斌和胡海泉也前来助阵,力推职

  • 周鸿祎调侃潘石屹学python:他写的估计一百行里有十个漏洞

    在 6 月 20 日极客公园联合bilibili举办的Rebuild2020的对话中,360董事长周鸿祎谈到漏洞不可避免的原因称,一是人写代码的技术漏洞,二是违背安全规则的人性漏洞。

  • 云计算开发学习笔记:Python3身份运算符实例

    身份运算符用于比较两个对象的内存地址是否一致,是否是对同一个对象的引用。注: id() 函数用于获取对象内存地址。以下实例演示了Python所有身份运算符的操作:以上实例输出结果:解析:身份运算符is 用于判断两个变量引用对象是否为同一个(同一块内存空间),比较运算符的 == 用于判断引用变量的值是否相等。以上内容为Python3身份运算符实例。

  • 云计算开发学习笔记:Python3位运算符实例

    在Python中,位运算符包括位与(&)、位或(|)、位求反(~)、位异或(^)、左移位()。Python中的按位运算法则如下:下表中变量 a 为 60,b 为 13二进制格式如下:在了解了位运算符后,再来看看实例演示中Python所有位运算符的操作:输出结果如下图:了解更多可以查看Python3全部的运算符《Python3运算符》。解析:位运算符只能适用于整数,其总体运算规则为:首先把整数转换为二进制表示形式,按最低位对齐,短的高位补0,然?

  • “Python之窗”百家号有什么作用?企业品牌必须知道的推广渠道

    备注:本文数据来自站长之家移动传媒平台,文章涉及的数据依托平台大数据计算所得,非百度官方数据,仅供参考。Python之窗是当前百家号中的普通号,目前账号百家号权重为2,综合排名位列784779名,科技分类排名位列36763名,领先了29.7%的百家号。 Python之窗百家号概况 Python之窗的简介为专注于Python相关知识分享,是一家主旨明确、领域专注的自媒体作者,截止目前为止他们已经在百家号上发布了超过7篇的游戏内容,最近该作者创

  • 云计算开发学习笔记:Python3逻辑运算符实例

    Python逻辑运算符由and or not组成,按照优先级依次为:() not and or。首先假设变量 a 为 10,b为 20,看下表:在了解了逻辑运算符后,再来看看实例演示中Python所有逻辑运算符的操作:输出结果如下图:了解更多可以查看Python3全部的运算符《Python3运算符》。解析:按照从左向由,优先级高的先执行优先级高的规则,首先因为比较运算符优先级高于逻辑运算符,很简单,如果运算符低于了逻辑运算符优先级那还如何运算呢。and 优先

  • TypeScript 热度超 C 与 Python、Go 开发收入高、运维吃香,调查了 65000 名开发者有这些发现!

    近十年来,Stack Overflow的年度开发者调查问卷被誉为全球范围内最大的开发者调查。为了寻求多样化的代表,Stack Overflow的官方将调查问卷从技术和行为等方面提出了各类问题,希望收集的信息能够帮助改善Stack Overflow开发者的社区。

  • TheShy正式入驻快手 theshy快手账号是多少

    6月10日,IG战队正式宣布上单选手TheShy入驻快手,同时也公布了theshy在快手平台的账号ID,对于喜欢theshy的选手,可以前往快手来关注他的动态啦。

  • GitHub将替换master、slave等术语 反对种族歧视

    DoNews 6月15日消息(记者 刘文轩)GitHub CEO Nat Friedman在Twitter表示,GitHub将使用中性词如“main”去替换“master”这个让人联想到奴隶制的术语。GitHub 成为最新一个支持移除可能冒犯部分群体的术语的公司。包括“master”和“slave”将被替换为“main/default/primary”和“secondary”,“whitelist”和“blacklist”将被替换为“allow list”和“deny/exclude list”。最近几周,由于“Black Lives Matter”的抗议活动?

  • 欧科云链OKLink行业观察:ETH矿工或将开启大迁徙

    6 月 23 日,以太坊官方博客更新其开发进度,Altona v0.12 测试网预计将在下周启动。这也就意味着,在经过探讨和不断的改进后,以太坊开发团队终于将启动第一个公开的、多客户端测试网络。 与目前的多客户端测试网类似,Altona更像是一个开发者网络,而不是一个以终端用户为中心的测试网。也就是说,Altona首先是让客户端团队在产品设置中检查v0. 12 软件,同时让ETH2. 0 开发者作为一个整体来解决可能只在多客户端设置中出现的bu

  • GitHub将替换掉 master 等术语 以避免联想到奴隶制

    近日代码托管平台GitHub CEO Nat Friedman公开表示,该公司将使用中性词如“main”替换“master”一词,避免让人联想到奴隶制的术语。

  • 通过这个方法,他3个月内从GitHub赚了56万元

    Caleb Porzio(卡莱布·波齐奥)是一名开发人员,曾在一家名为Tighten的软件公司就职。当时,波齐奥的年收入约为 9 万美元:开发人员的薪水变化非常大,但波齐奥的年收入基本稳定在 9 万美元左右,再加上他妻子的收入和一些额外的收入,存一笔钱以备不时之需已经足够。

  • OKEx早报:西班牙银行开始“冻卡”,ETH 手续费事件“破案”

    OKEx早报将在每日早间为您带来最新的行情,以及相关行业动态。帮助投资人在最短的时间内了解夜间的动态消息,更好的握把每日行情。行情速递6月18日讯,昨日晚间BTC出现一轮下滑幅度接近200美元,通过OKEx平台交易数据可以看出,BTC今日开盘报9384.31美元,开盘后横盘整理,至3:25开始出现下滑,4:05时到达早间最低点9232.53美元,随后出现反弹行情,至7:45触及早间高点9461.87美元,截止发稿BTC报9423.58美元。图片来源:OKEx平

  • OKEx早报:西班牙银行开始“冻卡”,ETH手续费事件“破案”

    OKEx早报将在每日早间为您带来最新的行情,以及相关行业动态。帮助投资人在最短的时间内了解夜间的动态消息,更好的握把每日行情。 行情速递 6 月 18 日讯,昨日晚间BTC出现一轮下滑幅度接近 200 美元,通过OKEx平台交易数据可以看出,BTC今日开盘报9384. 31 美元,开盘后横盘整理,至3: 25 开始出现下滑,4: 05 时到达早间最低点9232. 53 美元,随后出现反弹行情,至7: 45 触及早间高点9461. 87 美元,截止发稿BTC报9423. 58

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议