【python爬虫】初识爬虫

一、爬虫的定义

  爬虫定义:程序或者脚本——自动的爬取万维网的数据的程序或者脚本。

二、爬虫可以解决的问题

  1、解决冷启动问题。
  2、搜索引擎的根基——通用爬虫。
  3、帮助机器学习建立知识图谱。
  4、制作各种比价软件。

三、爬虫工程师的进阶之路

  1、初级爬虫工程师

    (1)web 前端的知识: HTML、CSS、JavaSc1ipt、 DOM、 DHTML 、Ajax、jQuery、json 等;
    (2)正则表达式, 能提取正常一般网页中想要的信息,比如某些特殊的文字, 链接信息, 知道什么是懒惰, 什么是贪婪型的正则;
    (3)会使用 XPath 等获取一些DOM 结构中的节点信息;
    (4)知道什么是深度优先, 广度优先的抓取算法, 及实践中的使用规则;
    (5)能分析简单网站的结构, 会使用urllib或requests 库进行简单的数据抓取。

  2、中级爬虫工程师

    (1)了解什么事HASH,会简单地使用MD5,SHA1等算法对数据进行HASH一遍存储
    (2)熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等
    (3)能设置user-agent进行数据爬取,设置代理等
    (4)知道什么事Request,什么事response,会使用Fiddler等工具抓取及分析简单地网络数据包;对于动态爬虫,要学会分析ajax请求,模拟制造post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录。
    (5)对于一些难搞定的网站学会使用phantomjs+selenium抓取一些动态网页信息
    (6)并发下载,通过并行下载加速数据爬取;多线程的使用。

  3、高级爬虫工程师

    (1)能够使用Tesseract,百度AI,HOG+SVM,CNN等库进行验证码识别。
    (2)能使用数据挖掘技术,分类算法等避免死链。
    (3)会使用常用的数据库进行数据存储,查询。比如mongoDB,redis;学习如何通过缓存避免重复下载的问题。
    (4)能够使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封禁等。
    (5)能使用一些开源框架scrapy,scrapy-redis等分布式爬虫,能部署掌控分布式爬虫进行大规模数据爬取。

四、搜索引擎

  1、什么是搜索引擎

    搜索引擎通过特定算法,从互联网上获取网页信息,将其保存到本地,为用户提供检索服务的一种程序。

  2、搜索引擎的组成:搜索引擎主要是是由通用爬虫组成的。

    (1)通用爬虫:将互联网上的网页信息【整体】爬取下来的爬虫程序。

    (2)搜索引擎的工作步骤:

       ①抓取网页
       ②数据存储
       ③预处理
        提取文字
        中文分词
        消除噪音
        ......
       ④设置网站排名(访问量),为用户提供检索服务。

    (3)为什么搜索引擎可以爬取所有的网页?---搜索引擎的通用是如何来爬取所有网页的。

        一个网页就是一个url,这个问题其实在问,【url的获取来源】。
        url的获取来源:

          ①新网站会主动提交网址给搜索引擎。
          ②网页中的一些外链,这些url全部都会加入到通用爬虫的爬取队列。
          ③搜索引擎和dns解析服务商合作,如果有新网站注册,搜索引擎就可拿到网址。

  3、通用爬虫的缺陷

    (1)通用爬虫是爬取整个网页,但是网页中90%的内容基本是没用。
    (2)不能满足不同行业,不同人员的不同需求。
    (3)只能获取文字,不能获取音频,视频,文档等信息。
    (4)只能通过关键字查询,无法通过语义查询。

  4、聚焦爬虫

      在实施网页抓取的过程中,【会对内容进行筛选】,尽量保证只抓取与【需求相关】的信息的爬虫程序。

五、robots协议

  定义:网络爬虫排除标准
  作用:告诉搜索引擎那些可以爬那些不能爬。

六、http协议

  1、什么是http协议

    是一种规范——————>约束发布和接受html的规范。

  2、http和https

    http:超文本传输协议。
    https : 安全版的http协议。---ssl---
    对称加密---密钥
    非对称---私钥+公钥
    数字签证---

  3、端口号

    https:443

    http:80
    Upgrade-Insecure-Requests: 1:可以将http升级成https请求。

  4、http的特点

    (1)应用层协议。
    (2)无连接:http每次发送请求和响应的过程都是独立。
      在http 1.0以后,有请求头:connection:keep-alive:客户端和服务建立长连接。
    (3)无状态:http协议不记录状态。
          cookie和session做到请求状态的记录。
          cookie是在客户端保存,session是在服务器保存。

  5、url:统一资源定位符

    (1)主要作用:用来定位互联网上的任意资源的位置。

    (2)为什么url可以定位任意资源?

        ①组成:https://www.baidu.com/index.html?username=123&password=abc#top
        ②scheme:协议---https
        ③netloc : 网络地址:ip:port---www.baidu.com
                  通过ip定位电脑,通过port定位应用。
                 192.168.92.10:
        ④代理ip:ip:port
        ⑤path:资源路径。---index.html
        ⑥query:请求参数:---?后面的内容username=123&password=abc
        ⑦fragment:锚点----top

        原因:url包含netloc可以定位电脑,path定位资源,这样就可以找到任意在互联网上的信息。

    (3)特殊符号:

        ?:后面就是请求参数
         & : 连接请求参数
         # : 锚点----如果url中有锚点,在爬虫程序中尽量去除。

  6、 http的工作过程

    (1)地址解析:
      将url的所有组成部分分别解析出来。
    (2)封装http请求数据包。
      将第一步解析出来的信息进行装包。---http数据包。
    (3)封装tcp数据包,通过三次握手建立tcp。
    (4)客户端发送请求
    (5)服务发送响应
    (6)关闭tcp连接。

  7、当我们在浏览器输入一个url,浏览器加载出这个页面,中间做了哪些事?

    (1)客户端解析url,封装数据包,建立连接,发送请求。
    (2)服务器返回url对应资源文件给客户端,比如:index.html。
    (3)客户端检查index.html是否有静态资源(引用外部文件),比如js,css,图片。有的话再分别发送请求,来获取这些静态资源。
    (4)客户端获取所有静态,通过html语法,完全将index.html页面显示出来。 

  8、 http的请求方法:

    get请求:get(获取)-->获取服务器的指定资源--->涉及到筛选一些信息--->请求参数:主要拼接在url中。--->不安全(别人可以通过url获取信息)--->请求参数的大小受限。
    post请求:post(邮递)--->向服务器传递数据--->请求数据是方法在请求实体中的--->安全--->大小不受限。

  9、客户端请求

    (1)组成:请求行、请求头、空行、请求数据(实体)

        请求头:请求方法;host地址,http协议版本。

    (2)请求头:

        ①user-agent:客户端标识。
        ②accept:允许传入的文件类型。
        ③Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
        ④Referer:标识产生请求的网页来自于哪个网页。
              防盗链
        ⑥cookie:cookie信息。---现在很多网站,必须封装cookie才给数据。
        ⑦post请求重要的请求头:
          content-type:post请求的数据类型
          content-length:post请求数据的长度。
        ⑧ajax请求必须封装的头:
          x-requested-with:xmlhttprequest

  10、服务器响应:

    (1)组成:状态行、响应头、空行、响应正文。

    (2)响应头

        Content-Type:text/html;charset=UTF-8

    (3)状态码(面试常考)

        ①1XX:表示服务器成功接收部分请求,还需要发剩余请求才能处理整个过程。(处理了一半)
        ②2XX:标识服务器成功接收请求并处理完整个过程。(成功)
           200成功
        ③3XX:为了完成请求,客户端需要进一步细化请求。
           302:重定向
           304:使用缓存资源
        ④4XX:客户端请求错误。(url写错了)
           404:服务器无法找到请求内容。
              403:服务器拒绝访问,权限不够。
        ⑤5XX:服务器错误。
              502:服务器错误
                   500:请求未完成,服务器遇到不可知问题

原文地址:https://www.cnblogs.com/Tree0108/p/12063686.html

时间: 2024-11-05 12:17:02

【python爬虫】初识爬虫的相关文章

Python爬虫--初识爬虫

Python爬虫 一.爬虫的本质是什么? 模拟浏览器打开网页,获取网页中我们想要的那部分数据 浏览器打开网页的过程:当你在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户在浏览器上看到的结果 所以用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源(文本,图片,视频.....) 二.爬虫的基本流

python爬虫从入门到放弃(一)之初识爬虫

原文链接:https://www.cnblogs.com/zhaof/p/6897393.html 整理这个文档的初衷是自己开始学习的时候没有找到好的教程和文本资料,自己整理一份这样的资料希望能对小伙伴有帮助 什么是爬虫? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫. 其实通俗的讲就是通过程序去获取web页面上自己想要的数据,也就是自动抓

[踩坑]python实现并行爬虫

问题背景:指定爬虫depth.线程数, python实现并行爬虫   思路:    单线程 实现爬虫类Fetcher                 多线程 threading.Thread去调Fetcher  方法:Fetcher 中,用urllib.urlopen打开指定url,读取信息: response = urllib.urlopen(self.url) content = response.read() 但是这样有问题, 比如对于www.sina.com来说,读出来的content是

Windows 环境下运用Python制作网络爬虫

import webbrowser as web import time import os i = 0 MAXNUM = 1 while i <= MAXNUM: web.open_new_tab('要刷的网络地址') os.system('taskkill /F /IM 浏览器文件名(chrome.exe)') i += 1 else: print 'happly day!' 代码和简单只要一个第三方的函数和调用系统的文件就OK了.记住给要刷的次数定值,不然电脑就不好受了! Windows

dota玩家与英雄契合度的计算器,python语言scrapy爬虫的使用

首发:个人博客,更新&纠错&回复 演示地址在这里,代码在这里. 一个dota玩家与英雄契合度的计算器(查看效果),包括两部分代码: 1.python的scrapy爬虫,总体思路是page->model->result,从网页中提取数据,组成有意义的数据结构,再拿这数据结构做点什么. 在这个项目中,爬虫的用处是从游久网dota数据库上抓取dota英雄和物品的数据和照片存到本地磁盘,数据存为json格式,方便在网页应用中直接使用. 2.网页应用,使用dota英雄数据.自己编写的小伙

python实现图片爬虫

#encoding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from sgmllib import SGMLParser import re import urllib class URLLister(SGMLParser): def start_a(self, attrs): url = [v for k, v in attrs if k=='href'] if url : urll = url[0] else :

Python Scrapy 自动爬虫注意细节

一.首次爬取模拟浏览器 在爬虫文件中,添加start_request函数.如: def start_requests(self): ua = {"User-Agent": 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2050.400 QQBrowser/9.5.10169.400'} yie

Python 开发轻量级爬虫02

Python 开发轻量级爬虫 (imooc总结02--爬虫简介) 爬虫简介 首先爬虫是什么?它是一段自动抓取互联网信息的程序. 什么意思呢? 互联网由各种各样的的网页组成,每一个网页都有对应的url,而url页面上又有很多指向其它页面的url,这些url之间相互指向的关系, 就形成了一个网状,这就是互联网. 正常情况下,我们使用人工的方式,从互联网上获取我们需要的感兴趣的信息.那有没有一种方法,我们设定了一个主题,设定一个感兴趣的目标, 可以自动从互联网上获取我们所需要的数据呢?这就是爬虫. 爬

Python 开发轻量级爬虫03

Python 开发轻量级爬虫 (imooc总结03--简单的爬虫架构) 现在来看一下一个简单的爬虫架构. 要实现一个简单的爬虫,有哪些方面需要考虑呢? 首先需要一个爬虫调度端,来启动爬虫.停止爬虫.监视爬虫的运行情况. 在爬虫程序中有三个模块.首先url管理器来对将要爬取的url和已经爬取过的url这两个数据的进行管理. 从url管理器中取出一个待爬取的url将其传送给网页下载器,下载器将指定的网页下载下来存储成一个字符串,这个字符串会传送给网页解析器进行解析, 一方面会解析出有价值的数据,另一

Python 开发轻量级爬虫01

Python 开发轻量级爬虫 (imooc总结01--课程目标) 课程目标:掌握开发轻量级爬虫 为什么说是轻量级的呢?因为一个复杂的爬虫需要考虑的问题场景非常多,比如有些网页需要用户登录了以后才能够访问,有些网页是 使用了Ajax异步加载的内容,这些网页的抓取就会比较复杂. 这里只会考虑不需要登录的静态加载网页的抓取. 课程包含以下内容: 1.爬虫简介 介绍爬虫是什么?它实现了什么功能? 2.简单爬虫架构 介绍简单的爬虫架构,架构中包含了哪些模块,这些模块怎么组装在一起完成整个爬取任务的.但该架