童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

一看就明白的爬虫入门讲解基础理论篇(上篇)

6月2日 萌嘟嘟投稿
  关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:
  我们的目的是什么
  内容从何而来
  了解网络请求
  一些常见的限制方式
  尝试解决问题的思路
  效率问题的取舍
  本文先聊聊前三个部分。
  一、我们的目的是什么
  一般来讲对我们而言需要抓取的是某个网站或者某个应用的内容,提取有用的价值,内容一般分为两部分,非结构化的文本,或者结构化的文本。
  关于非结构化的数据
  1。1HTML文本(包含javascript代码)
  HTML文本基本上是传统爬虫过程中最常见的,也就是大多数时候会遇到的情况,例如抓取一个网页,得到的是HTML,然后需要解析一些常见的元素,提取一些关键的信息。HTML其实理应属于结构化的文本组织,但是又因为一般我们需要的关键信息并非直接可以得到,需要进行对HTML的解析查找,甚至一些字符串操作才能得到,所以还是归类于非结构化的数据处理中。
  常见解析方式如下:
  CSS选择器
  现在的网页样式比较多,所以一般的网页都会有一些CSS的定位,例如class,id等等,或者我们根据常见的节点路径进行定位,例如腾讯首页的财经部分:
  这里id就为finance,我们用css选择器,就是”finance”就得到了财经这一块区域的html,同理,可以根据特定的css选择器可以获取其他的内容。
  XPATH
  XPATH是一种页面元素的路径选择方法,利用chrome可以快速得到,如:
  copyXPATH就能得到〔id”finance”〕
  正则表达式
  正则表达式,用标准正则解析,一般会把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。
  所以分析请求时,一定要注意前四个,在模拟时保持一致,同时观察第五个返回时是不是有限制或者有重定向。
投诉 评论 转载

开课通知史上最强产品总监晋级大课开课倒计时,四大梦想导师齐聚亲爱滴小伙伴们,史上最强产品总监晋级大课《产品总监修炼之道》报名非常火热,门票已经全部售罄!目前一切准备就绪,就等大家来上课啦!温馨提示1。请务必留足时间,提前出发……一看就明白的爬虫入门讲解基础理论篇(上篇)关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:我们的目的是什么内容从何而来了解网络请求一些常见的限制方式尝试解决问题的思路……产品经理3000问作为一名产品经理,这些秘诀方法你都知道嘛?说大道理谁都知道,说设计流程、说工具使用,百度或者谷歌一下搜索一下也能告诉我们答案。但是工作中的细节,因为每个人碰到的情况不一样,而这种细节性的问题是没有标准答案的,需要具体问……产品经理需要了解的心理小课堂直觉与误差篇大家好,我是李红袖,再一次和大家见面了上一篇文章中和大家讨论的是“社会群体判断”的相关知识,这次要和大家聊的是“人们直觉和偏差”的内容。很多时候人们的直觉是有着他们自己习……一看就明白的爬虫入门讲解基础理论篇(下篇)上篇我分享了爬虫入门中的我们的目的是什么、内容从何而来、了解网络请求这三部分的内容,这一篇我继续分享以下内容:一些常见的限制方式尝试解决问题的思路效……什么样的产品:是一款好产品?经常会有人问这个问题,究竟什么样的产品能算一个好产品。以前,BLUES会回答:首先要有用,解决用户的某个问题,具体一点,就是满足某类用户在某个特定的时间、地点下产生……除了埋头苦干,更要抬头望天记11月北京起点学院课程写在正文之前的废话:水了N久的人人都是产品经理社区,更是已经忘了具体多久之前参加了起点学院的入学考试,一直拖到了现在经过长久的蓄谋,终于还是从大郑州杀向了大首都,亲身体验……产品经理做好跨部门合作的一个中心和三个原则跨部门合作是产品经理工作中最重要的一部分。除了用户调研、需求分析、原型设计等本职工作之外,跨部门沟通和合作可能就是产品经理最核心的工作了。而且,这种跨部门合作的难度和复杂性会随……如何写一份过关的产品经理简历?今天下午是迅雷的校招笔试时间,最后的笔试名单是昨天下午确认。不少同学做完笔试后,表示,脑洞大开,各类题目都有,从逻辑推理,到游戏,到产品常识,到产品思维,到二次元好吧,因为这套……迅雷产品经理的一天很多朋友对产品经理的工作很感兴趣,今天Glen就来记录一下产品经理工作的一天,帮助你了解这个神奇的群体。一起去做产品吧!09:30产品经理的一天开始了经过搏斗,Gl……一线产品喵浅谈日常产品工作关注点之前有国内一位Top级的CTO一直吐槽产品经理,对产品经理不以为然,觉得这个职位非常多余。最近突然在微信上对我说:“赶紧推荐我几个产品经理,没有产品经理真不行。作为一个一……初出茅庐的产品经理感悟本文作于一个初级软件产品经理,而且专注于移动端软件产品,希望对刚刚踏入工作的想做移动端产品经理的或者想转行做产品经理的人,有些许帮助。一,选择做什么产品的经理俗话说……
从历史的角度,看服务设计是如何演变网站设计规范应该做什么,不该做什么从iOS11UIKit中谈谈iOS11的新变化iPhoneX交互分析报告实例分析:用户最讨厌的3种UI设计方法语音交互设计(1):设计流程还在天天苦恼于跟开发讲不清设计细节,为什么不用7天学做一份好一图胜千言设计规则篇:学会这4点,人人都是设计师超全面!设计师如何设计iPhoneX视觉稿如何让你的设计一次性通过?设计规范详解组件控件结构体系:单元控件类不仅要搞定视觉,UI设计师还得写得一手好微文案给工地上父亲的信作文我要买可乐是什么意思什么梗,出处是哪里怀念茶,多点淡然,人,少点虚荣!1岁半宝宝每天睡眠时间那一刻春暖花开根据我国法律规定征收社会抚养费是多少钱?蓬勃发展的宠物市场需要制度来完善为什么成人网站Snatchly如此流行?关于无效合同包含哪些情况2021中国国际数字经济博览会数字经济领跑企业超半数珍惜作文600字

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界