速学爬虫

amazingygy amazingygy     2022-12-16     762

关键词:

爬虫前奏

 爬虫实例:

  1.搜索引擎(百度、谷歌、360搜索等)。

  2.伯乐在线。

  3.惠惠购物助手。

  4.数据分析与研究(数据冰山知乎专栏)。

  5.抢票软件等。

 什么是网络爬虫:

  1.通俗理解:爬虫是一个模拟人类请求网站行为的程序,可以自动请求网页、并将数据抓取下来,然后使用一定的规则提取有价值的数据。

  2.专业介绍:百度百科。

 通用爬虫和聚焦爬虫:

  1.通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗等)的重要组成部分。主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

  2.聚焦爬虫:是面向特定需求的一种网络爬虫程序,他与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。

 为什么用python写爬虫程序:

  1.PHP:PHP大多用于网页开发,对多线程、异步支持不是很好,并发处理能力弱。爬虫是工具性程序,对速度和效率要求比较高。

  2.Java:生态圈很完善,是python爬虫最大的竞争对手。但Java语言本身很笨重,代码量很大,重构成本比较高,任何修改会导致代码大量改动,而爬虫经常要修改采集代码。

  3.C/C++:运行效率是无敌的,但学习和开发成本高,写爬虫程序可能要很长时间。

  4.python:语法优美、海马简洁、开发效率高、支持的模块多。相关的HTTP请求模块和HTML解析模块非常丰富。还有Scrapy和Scrapy-redis框架让我们开发爬虫变得异常简单。

 准备工具:

  1.python3.6开发环境。

  2.pycharm 2017 professional版。

  3.虚拟环境“virtualenv/virtualenvwrapper”。

http协议和chrome抓包工具:

 什么是http和https协议:

  HTTP协议:全称是HyperText Transfer Protocal,中文意思是超文本传输协议,是一种发布和接受HTML页面的方法。服务器端口号是80端口。

  HTTPS协议:是HTTP协议的加密版本,在HTTP下加入了SSL层,服务器端口号是443端口。

 在浏览器中发送一个http请求的过程:

  1.当用户在浏览器的地址栏中输入一个URL并按回车键之后,浏览器会向HTTP服务器发送HTTP请求,HTTP请求主要分为“get”和“post”两种方法。

  2.当我们在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个request请求去截获 http://www.baidu.com 的html文件,服务器把request文件对象发送回给浏览器。

  3.浏览器分析request中的html,发现其中引用了很多其他文件,比如lmages文件,css文件,js文件。浏览器会自动再次发送request去获取图片,css文件,或者js文件。

  4.当所有的文件都下载成功后,网页会根据HTML语法结构完整的显示出来。

 url详解:

  url是统一资源定位符。

  一个url由以下几部分组成:scheme://host:port/path/?query-string=xxx#anchor

  scheme:代表的是访问的协议,一般为http或者http以及ftp等。

  host:主机名、域名。

  port:端口号。访问网站时,浏览器默认使用80端口。

  path:查找路径。

  query-string:查询字符串。

  anchor:锚点,后台一般不用管,前端用来做页面定位。

  在浏览器中请求一个url,浏览器会对这个url进行一个编码,除英文字母、数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。

 常用的请求方法:

  在http协议中,定义了8种请求方法。常用两种:get请求和post请求。

  get请求:请求指定的页面信息,并返回实体主体。只从服务器获取数据,并不会对服务器资源产生任何影响。

  post请求:向指定资源提交数据进行处理请求,数据包含在请求体中,POST请求可能会导致新的资源的建立或已有资源的修改。

 请求头常见参数:

  1.user-agent  2.referer  3.cookie

 常见响应状态码:

  1.200:请求正常,服务器正常的返回数据。

  2.301:永久重定向。

  3.302:临时重定向。

  4.400:请求的url在服务器上找不到。

  5.403:服务器拒绝访问,权限不够。

  6.500:服务区内部错误。

 chrome抓包工具:

  chrome浏览器是一个非常亲近开发者的浏览器。可以方便的查看网络请求以及发送的参数。

 

快看sample代码,速学swift语言-基础介绍快看sample代码,速学swift语言-语法速览(代码片段)

快看Sample代码,速学Swift语言(2)-基础介绍Swift语言是一个新的编程语言,用于iOS,macOS,watchOS,和tvOS的开发,不过Swift很多部分内容,我们可以从C或者Objective-C的开发经验获得一种熟悉感。Swift提供很多基础类型,如Int,String,Doub... 查看详情

linux之:ubuntu速学笔记

...2016-7-217:11:28Saturday课程资源: web程序员角度ubuntu自修速学课程链接来源:程序员在囧途, VMware:VMwareWorkstation12Ubuntu:Ubuntu16.04-64位写文章之前要感谢囧途讲师(以后简称“囧师”,望叔见谅)【沈逸】“沈叔”... 查看详情

一文速学-最小二乘法曲线拟合算法详解+项目代码

目录前言一、曲线拟合策略二、最小二乘法理论基础1.残差原理特征< 查看详情

reactnative之react速学教程(中)

概述本篇为《ReactNative之React速学教程》的第一篇。本篇将从React的特点、如何使用React、JSX语法、组件(Component)以及组件的属性,状态等方面进行讲解。What’sReactReact是一个用于组建用户界面的JavaScript库,让你以更简单的方式... 查看详情

reactnative之react速学教程(上)

概述本篇为《ReactNative之React速学教程》的第一篇。本篇将从React的特点、如何使用React、JSX语法、组件(Component)以及组件的属性,状态等方面进行讲解。What’sReactReact是一个用于组建用户界面的JavaScript库,让你以更简单的方式... 查看详情

微信支付(速学)

微信支付开发IOS图文教程案例  如何成为微信支付商户的方法:腾讯客服-微信支付商户申请接入信息汇总:http://kf.qq.com/faq/140225MveaUz150107UVFNjy.html腾讯客服-APP接入微信支付商户方法:http://kf.qq.com/faq/130807me2YZf140528j6JRjE.html... 查看详情

c#基础速学(代码片段)

原文地址https://www.cnblogs.com/younShieh/p/10945264.html   前几天在刷即刻的时候发现了一个GitHub上的项目,该项目名为“learnxinyminutes”,这个名称就很简明扼要——“y分钟学习xxx”,一看就很牛。对于这种... 查看详情

reactnative之react速学教程(代码片段)

...篇幅比较多,学起来比较枯燥。通过《ReactNative之React速学教程》你可以对React有更系统和更深入的认识。为了方便大家学习,我 查看详情

linux之:ubuntu速学笔记

撰写日期:2016-7-318:20:39基本内容包括:Flashplayer安装、编译安装PHP、写个简单的PHP程序;Java程序(Java需要使用“javac”命令编译一下才能执行) 一、安装PHP、flashplayer、简单的PHP程序编写1、安装flashplayer①、练习使用a... 查看详情

reactnative之react速学教程(下)

概述本篇为《ReactNative之React速学教程》的最后一篇。本篇将带着大家一起认识ES6,学习在开发中常用的一些ES6的新特性,以及ES6与ES5的区别,解决大家在学习React/ReactNative过程中对于ES6与ES5的一些困惑。ES6的特性何为ES6?ES6全称... 查看详情

gson速学必会(代码片段)

一.GSON简介GSON是一个Java语言编写的用于处理JSON数据格式的开源应用程序编程接口项目。它将Java对象转换为JSON表示。还可以用于将JSON字符串转换为等效的Java对象。gson包包含了JSON数据处理的所有常见类和接口。gson内部的子包ref... 查看详情

natapp内网穿透速学教程(代码片段)

natapp内网穿透速学教程概念安全性natapp的使用1.注册2.购买隧道3.隧道配置4.我的隧道5.配置隧道6.客户端下载7.运行natapp8.测试概念内网穿透简单来说就是将内网地址(局域网地址)转换成可以让外网直接访问的地址。实现... 查看详情

一文速学-pandas处理dataframe稀疏数据及维度不匹配数据详解(代码片段)

...前的博客详细介绍这两种数据结构的处理方法:一文速学-数据分析之Pandas数据结构和基本操作代码一文速学-Pandas实现数值替换、排序、排名、插入和区间切片一些Pandas基础函数的使用方法:DataFrame行列表查询操作详解... 查看详情

架构思维案例:速学正则

 前言本文的目的不仅是教会读者怎么使用正则表达式。更希望通过学习正则表达式的案例,让读者感受一种不同的思维方式。鱼亦渔亦水,谁知道呢,我在扯淡,你要不要看?正文正则表达式是描述一组字符串特征的模式,... 查看详情

elasticsearch速学-ik中文分词器远程字典设置

前面已经对”IK中文分词器“有了简单的了解: 但是可以发现不是对所有的词都能很好的区分,比如:  逼格这个词就没有分出来。词库实际上IK分词器也是根据一些词库来进行分词的,我们可以丰富这个词库。 IK... 查看详情

grpc之protobuf常用语法速学(代码片段)

1,语法速学(1):返回商品”数组”、repeated修饰符Repeated:是一个修饰符,返回字段可以重复任意多次(包括0次)可以认为就是一个数组(切片) 服务端:创建protobuf文件syntax="proto3";packageservices;import"google/api/annotations.proto";mes... 查看详情

速学typescript-精简划重点手册-中册(代码片段)

👉关于作者众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找... 查看详情

一文速学-pandas中dataframe转换为时间格式数据与处理(代码片段)

...便时间的运算等操作。正好原来有篇文章特别是讲述一文速学-Pandas处理时间序列数据操作详解。这篇文章忽略掉了如何转换为时间序列数据,正好补上,这样就实现的Pandas处理时间数据的全部内 查看详情