一看就明白的爬虫入门讲解基础理论篇上篇
关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:
我们的目的是什么
内容从何而来
了解网络请求
一些常见的限制方式
尝试解决问题的思路
效率问题的取舍
本文先聊聊前三个部分。
一、我们的目的是什么
一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般分为两部分,非结构化的文本,或者结构化的文本。
关于非结构化的数据
1。1HTML文本(包含javascript代码)
HTML文本基本上是传统爬虫过程中最常见的,也就是大多数时候会遇到的情况,例如抓取一个网页,得到的是HTML,然后需要解析一些常见的元素,提取一些关键的信息。HTML其实理应属于结构化的文本组织,但是又因为一般我们需要的关键信息并非直接可以得到,需要进行对HTML的解析查找,甚至一些字符串操作才能得到,所以还是归类于非结构化的数据处理中。
常见解析方式如下:
CSS选择器
现在的网页样式比较多,所以一般的网页都会有一些CSS的定位,例如class,id等等,或者我们根据常见的节点路径进行定位,例如腾讯首页的财经部分:
这里id就为finance,我们用css选择器,就是finance就得到了财经这一块区域的html,同理,可以根据特定的css选择器可以获取其他的内容。
XPATH
XPATH是一种页面元素的路径选择方法,利用chrome可以快速得到,如:
copyXPATH就能得到〔idfinance〕
正则表达式
正则表达式,用标准正则解析,一般会把HTML当做普通文本,用指定格式匹配当相关文本,适合小片段文本,或者某一串字符,或者HTML包含javascript的代码,无法用CSS选择器或者XPATH。
字符串分隔
同正则表达式,更为偷懒的方法,不建议使用。
1。2一段文本
例如一篇文章,或者一句话,我们的初衷是提取有效信息,所以如果是滞后处理,可以直接存储,如果是需要实时提取有用信息,常见的处理方式如下:
分词
根据抓取的网站类型,使用不同词库,进行基本的分词,然后变成词频统计,类似于向量的表示,词为方向,词频为长度。
NLP
自然语言处理,进行语义分析,用结果表示,例如正负面等。
关于结构化的数据
结构化的数据是最好处理,一般都是类似JSON格式的字符串,直接解析JSON数据就可以了,提取JSON的关键字段即可
二、内容从何而来
过去我们常需要获取的内容主要来源于网页,一般来讲,我们决定进行抓取的时候,都是网页上可看到的内容,但是随着这几年移动互联网的发展,我们也发现越来越多的内容会来源于移动app,所以爬虫就不止局限于一定要抓取解析网页,还有就是模拟移动app的网络请求进行抓取,所以这一部分我会分两部分进行说明。
1网页内容
网页内容一般就是指我们最终在网页上看到的内容,但是这个过程其实并不是网页的代码里面直接包含内容这么简单,所以对于很多新人而言,会遇到很多问题,比如:
明明在页面用Chrome或者Firefox进行审查元素时能看到某个HTML标签下包含内容,但是抓取的时候为空。
很多内容一定要在页面上点击某个按钮或者进行某个交互操作才能显示出来。
所以对于很多新人的做法是用某个语言别人模拟浏览器操作的库,其实就是调用本地浏览器或者是包含了一些执行javascript的引擎来进行模拟操作抓取数据,但是这种做法显然对于想要大量抓取数据的情况下是效率非常低下,并且对于技术人员本身而言也相当于在用一个盒子,那么对于这些内容到底是怎么显示在网页上的呢?主要分为以下几种情况:
网页包含内容
这种情况是最容易解决的,一般来讲基本上是静态网页已经写死的内容,或者动态网页,采用模板渲染,浏览器获取到HTML的时候已经是包含所有的关键信息,所以直接在网页上看到的内容都可以通过特定的HTML标签得到
javascript代码加载内容
这种情况是由于虽然网页显示时,内容在HTML标签里面,但是其实是由于执行js代码加到标签里面的,所以这个时候内容在js代码里面的,而js的执行是在浏览器端的操作,所以用程序去请求网页地址的时候,得到的response是网页代码和js的代码,所以自己在浏览器端能看到内容,解析时由于js未执行,肯定找到指定HTML标签下内容肯定为空,这个时候的处理办法,一般来讲主要是要找到包含内容的js代码串,然后通过正则表达式获得相应的内容,而不是解析HTML标签。
Ajax异步请求
这种情况是现在很常见的,尤其是在内容以分页形式显示在网页上,并且页面无刷新,或者是对网页进行某个交互操作后,得到内容。那我们该如何分析这些请求呢?这里我以Chrome的操作为例,进行说明:
所以当我们开始刷新页面的时候就要开始跟踪所有的请求,观察数据到底是在哪一步加载进来的。然后当我们找到核心的异步请求的时候,就只用抓取这个异步请求就可以了,如果原始网页没有任何有用信息,也没必要去抓取原始网页了。
2App内容
因为现在移动应用越来越多,很多有用信息都在App里面,另外解析非结构化文本和结构文本对比而言,结构化文本会简单多了,不同去找内容,去过多分析解析,所有既有网站又有App的话,推荐抓取App,大多数情况下基本上只是一些JSON数据的API了。那么App的数据该如何抓取呢?通用的方法就是抓包,基本的做法就是电脑安装抓包软件,配置好端口,然后记下ip,手机端和电脑在同一个局域网里面,然后在手机的网络连接里面设置好代理,这个时候打开App进行一些操作,如果有网络数据请求,则都会被抓包软件记下,就如上Chrome分析网络请求一样,你可以看到所有的请求情况,可以模拟请求操作。这里Mac上我推荐软件Charles,Windows推荐Fiddler2。
具体如何使用,之后我再做详述,可能会涉及到HTTPS证书的问题。
三、了解网络请求
刚刚一直在宽泛的提到一些我们需要找到请求,进行请求,对于请求只是一笔带过,但请求是很重要的一部分,包括如何绕过限制,如何发送正确地数据,都需要对的请求,这里就要详细的展开说下请求,以及如何模拟请求。
我们常说爬虫其实就是一堆的HTTP请求,找到待爬取的链接,不管是网页链接还是App抓包得到的API链接,然后发送一个请求包,得到一个返回包(也有HTTP长连接,或者Streaming的情况,这里不考虑),所以核心的几个要素就是:
URL
请求方法(POST,GET)
请求包headers
请求包内容
返回包headers
在用Chrome进行网络请求捕获或者用抓包工具分析请求时,最重要的是弄清楚URL,请求方法,然后headers里面的字段,大多数出问题就出在headers里面,最常限制的几个字段就是UserAgent,Referer,Cookie另外BaseAuth也是在headers里面加了Autheration的字段。
请求内容也就是post时需要发送的数据,一般都是将KeyValue进行urlencode返回包headers大多数会被人忽视,可能只得到内容就可以了,但是其实很多时候,很多人会发现明明url,请求方法还有请求包的内容都对了,为什么没有返回内容,或者发现请求被限制,其实这里大概有两个原因:
一个是返回包的内容是空的,但是在返回包的headers的字段里面有个Location,这个Location字段就是告诉浏览器重定向,所以有时候代码没有自动跟踪,自然就没有内容了;
另外一个就是很多人会头疼的Cookie问题,简单说就是浏览器为什么知道你的请求合法的,例如已登录等等,其实就是可能你之前某个请求的返回包的headers里面有个字段叫SetCookie,Cookie存在本地,一旦设置后,除非过期,一般都会自动加在请求字段上,所以SetCookie里面的内容就会告诉浏览器存多久,存的是什么内容,在哪个路径下有用,Cookie都是在指定域下,一般都不跨域,域就是你请求的链接host。
所以分析请求时,一定要注意前四个,在模拟时保持一致,同时观察第五个返回时是不是有限制或者有重定向。
感情中一旦付出真心就很难再回头的生肖一个感情专一,用情至深的人,通常对自己的感情都很负责任,一旦真心爱上一个人,在感情中付出了真心,那就是一辈子的事,绝不回头,不管对方变成什么样,都不会轻易放弃。比如这五个生肖的……
秋冬季节的女生卷发怎么打理侧边卷发时尚中不乏浪漫很优雅大气的一款卷发发型,系上白色的围巾乌黑的秀发搭在围巾上台唯美时尚,大波浪的卷发突出了浪漫气质,在秋冬季这样的发型又很百搭。很有女神范的大波浪卷发,甜美三七分的长刘海……
骑楼造句用骑楼造句大全31。南海网海口9月8日消息(南海网记者吴维杨)品味琼剧名段、欣赏川剧变脸,热热闹闹的海口骑楼小吃街7日晚上让观众体验一场别开生面的戏曲节目。32。原来珠光路77、79号……
妇联主任述职报告经典学习范本妇联主任述职报告经典学习范本由好范文网会员公主投稿推荐,但愿对你的学习工作能带来参考借鉴作用。述职报告是工作中一个很重要的部分,有助于了解自身的工作能力,有利于自己的职业……
秧苗造句用秧苗造句大全91,云逸也是有工作没完成的,就是上午他打好地垄的菜地,因为当时太阳已经开始毒了起来,所以没有敢将秧苗栽下。92,正值初夏时节,寿宁县平溪乡燕科村盆地自然村一片生机勃勃,……
热爱青春青春,就像亚当和夏娃咬下的苹果,看似外表美丽,实则苦涩不已;青春,就像夏日的天气,时而晴空万里,时而狂风暴雨;青春,就像天上的云朵,看似变幻不已,其实,风吹过,就是虚拟。……
新鲜人参泡酒泡几天人参泡酒可加什么药材人参又叫地精,是很常见的一种中药草,属于百草之王,有非常好的药效。人参主要适合气虚之人补气食用,食用应适量,补过了就不好了。人参还可以另外添加到煲汤或者泡酒。那么人参泡酒泡几天……
治疗情绪烦恼的大自愈高招Psy525。cn情绪垃圾筒人人都需要,但每次遇到糟心事,未必总能找到可以宽慰你的人,这时怎么办?试试4个不求人的自愈好方法!心情不好,找人倾诉一番有多重要?心理学……
彼岸花怎样种植方法彼岸花的种植方法其中很简单,首先需要准备一些优良的种子,可从花朵中获取,也可以购买其种子,然后准备疏松透气、具有微酸性的土壤做基质,将准备好的种子播种到土壤里,适当的将其压实,……
碎玻璃可回收么国外怎么处理碎玻璃的垃圾处理水平已成为体现社会可持续发展水平的一项重要指标,当然废玻璃回收也不例外,且占固废的不小的比例。数据统计,回收一废玻璃可以节约石英砂720公斤,纯碱250公斤,长石粉60……
用事实说话第八章崔二蛋暗暗起誓第八章崔二蛋暗暗起誓崔念哲要回乡做大学生村官了!这个消息不胫而走,一时成了崔家村的头条。最先透露这个消息的人是崔二蛋。自豪写在脸上,骄傲写在脸上。崔二蛋讲这个……
纯净造句用纯净造句大全【纯净chnjng】:洁净不杂:水质纯净。(1)母爱就是一首田园诗,幽远纯净,和雅清淡;母爱就是一幅山水画,洗去铅华雕饰,留下清新自然;母爱就是一首深情的歌,婉转悠扬,轻……
什么人适合染樱花粉樱花粉染发效果图樱花粉染发效果图每年的春季,赏樱、赏桃花成为很多人踏春的主题。粉色浪漫的花海,使得很多人如沐春风,尽享春季的美好。樱花粉染发效果图对于没有时间赏花的你,可以从……
一件难忘的事光阴似箭,转眼我就上五年级了。但是看着茶几上的金奖杯,我不由自主地想起了暑假里参加才艺大赛的趣事。暑假的某一天下午,我怀着激动的心情走进了赛场。虽说比赛本应该是紧张的,但……
百度微信小程序的这大优势决定了现在是入驻的最佳时虽然是BAT三家中最晚入局小程序的,百度小程序却凭借差异化的能力和定位快速撕开了市场,在公测的两个月内交出了覆盖1亿用户、月活破亿、触达了100用户场景的优秀答卷,并产生了很多……
霜霉病对菠菜的危害在种植菠菜期间,遭受病害的侵袭是不可避免的事情,几乎每个菜农都遇到过此情况,霜霉病就是其中的一种病害,那么,霜霉病对菠菜有什么危害呢?下面跟随小编一起来看一下吧。危害……
一千零一夜读书笔记《一千零一夜》在我国又译为《天方夜谭》,这是一部在我国乃至世界各国都流传甚广的阿拉伯文学名著,它是阿拉伯人在长达几百年的历史进程中,除旧增新,共同加工,编纂而成的阿拉伯民间故事……
乘客侧安全气囊点火器在哪里气囊是一种在柔性地橡胶胶囊中充入压缩空气或水介质;利用空气地可压缩性和水的流动性来实现弹性作用。那么,乘客侧安全气囊点火器在哪里呢?下面就让本站小编来介绍吧!气囊电脑板一……
激光祛斑后如何保养术后不保养会复发注意防晒激光祛斑后痂皮脱落后,无需再擦药膏,但需擦防晒油,防晒系数15以上,在室内也要涂抹,以防紫外线的伤害。尽量避免在早10点至晚4点阳光较强的时间出门的可能性。激光祛……
奇事展能!因为每个发育健全的青年男女的体内都大量地储存着雄性激素或雌性激素,它们就像是干柴,男女运动的刺激就像是火种,干柴遇到了火种燃烧是客观规律,可是燃起熊熊大火必须得有一个时间。……
亲情母亲去世已十六年了,这么多年来我从未在清明回过老家为她扫墓,她也没有墓地,她的骨灰仍存放在公共墓地一间老房子里,以前因为在军营的缘故,常常不能随时回家,我早已习惯了用自己的方式……
万元创业项目有哪些万元创业项目推荐80后、90后都是受过良好教育的人,所以创业的人也特别多,而且现在国家鼓励创业,给了创业者很多的优惠政策,所以很多人都想自己试一试,那么如果你手上有10万元,做哪些项目比较好呢……
我有一个想法我的爸爸很爱喝酒,早饭、午饭、晚饭都要喝一瓶,如果是在大场面,我的爸爸都可以喝仙儿了。有一年过年的时候,我的爸爸喝了十几瓶酒,突然就发起酒疯,我害怕极了。还有一次,我的爸……
十种动人至深的生活态度磨亮想象力要更有创意,就要像孩子般地思考,比如重看一本最喜欢的童书,学习小孩子的思考方式;或者读一首诗,在心里想象它的意境;一边听广播的古典音乐、爵士乐……