zoukankan      html  css  js  c++  java
  • Python 爬虫基础

    1. 安装虚拟环境

    #安装虚拟环境(window下加-win,苹果系统不需要加)
    pip install virtualenvwrapper-win
    #常用命令
    mkvirtualenv pmz(创建虚拟环境的名字)				 	 #创建虚拟环境成功后会自动切换到环境下
    workon envname(envname(切换虚拟环境的名字)) 		  	  #切换到虚拟环境
    pip list     										#查看虚拟安装所有的包
    deactivate   										#退出虚拟环境
    rmvirtualenv pmz(pmz(删除虚拟环境))               	#删除虚拟环境
    lsvirtualenv  										#列出所有已创建的虚拟环境
    mkvirtualenv--python--C: ..python.exe envname   	#指定Python解释器创建虚拟环境
    

    2. 爬虫概念

    爬虫, 又称网页蜘蛛或网络机器人. 
    爬虫是 模拟人操作客户端(浏览器, APP) 向服务器发起网络请求 抓取数据的自动化程序或脚本. (*****) 
    # 说明: 
    	1.模拟: 用爬虫程序伪装出人的行为, 避免被服务识别为爬虫程序 
        2.客户端: 浏览器, APP都可以实现人与服务器之间的交互行为, 应用客户端从服务器获取数据 
        3.自动化: 数据量较小时可以人工获取数据, 但往往在公司中爬取的数据量在百万条, 千万条级别的, 所以要程序		自动化获取数据.
    cpython   -   Ipython
    #通用爬虫----只是爬虫,为搜索引擎提供检索服务
    1.起始url
    2.url队列    --------爬取数据
    
    
    #设计思路
    1.确定url,发起请求,获取响应
    2.数据解析:re,正则,xpath,Bs4,pyQuery
    3.数据持久化:    数据库Mysql   Redisa,MongoDB
    

    3. 爬虫分类

    (1): 通用爬虫-----只是爬虫,为搜索引擎提供检索服务:搜索引擎
        # 实例: 百度, 搜狗, Google的搜索引擎 
        # 功能: 访问网页 -> 抓取数据 -> 数据处理 -> 提供检索服务 
        # 工作流:
        	1.给定一个起始URL, 存于爬取队列中 
            2.爬虫程序从队列中取出url, 爬取数据 
            3.解析爬取数据, 获取网页内的所有url, 放入爬取队列
            4.重复第二个步骤
        # 使搜索引擎获取网站链接: 
        	1.主动将url提交给搜索引擎(https://ziyuan.baidu.com/linksubmit/url) 
            2.在其他热门网站设置友情了解 
            3.百度和DNS服务商合作, 收录新网站
        # 网站排名(SEO): 
        	1.根据PageRank值进行排名(流量, 点击率) 
            2.百度竞价排名, 钱多就靠前排 
        # 缺点: 
        	1.抓取的内容多数无用 
            2.无法精确获取数据 
        # 协议: robots协议 --> 约定哪些内容允许哪些爬虫抓取 (约束通用爬虫和聚焦爬虫)
        	1.无需遵守, 该协议适用于通用爬虫, 而我们写的是聚焦爬虫 
            2.查看方法: 网站url/robots.txt, 如https://www.baidu.com/robots.txt
    (2): 聚焦爬虫-----聚焦爬虫
        # 概念:
        	聚焦爬虫指针对某一领域根据特定要求实现的爬虫程序, 抓取需要的数据(垂直领域爬取)
        # 设计思路: 
        	(1).确定爬取的url, 模拟浏览器请服务器发送请求  
            (2).获取响应数据并进行数据解析 ---re,正则,[xpath]推荐,Bs4,pyQuery
            (3).将目标数据持久化到本地----- .MySQL,MongoDB,Redis
    

    4. 协议模型

    OSI七层模型
    7.应用层   6.表示层   5.会话层   4.传输层    3.网络层    2.数据链路层    1.物理层 (从下往上数)
    tcp 五层协议
        1.应用层:http/Https/fip/ssh
        2.传输层:tcp/udp
        3.网络层: ip协议
        4.数据链路层:APR协议
        5.物理层:以太网协议
    

    5. HTTP协议与HTTP S协议

    # HTTP协议: 明文传输, 端口80 
    - Http协议, 全称为Hyper Text Transfer Protocol, 即超文本传输协议. 
    - HTTP协议是用于从网络传输超文本数据到本地浏览器的传送协议, 它能保证高效而准确地传送超文本文档. 
    - 目前广泛使用的是HTTP 1.1版本     
    
    # HTTPS协议: 加密传输, 端口443 
    - HTTPS全称是Hyper Text Transfer Protocol over Secure Socket Layer, 是以安全为目标的 HTTP通道. HTTPS协议实质是HTTP的安全版, 即HTTP下加入SSL安全套接层, 简称HTTPS. 
    - HTTPS的安全体现在SSL的加密行为, 即通过HTTPS协议传输的数据都是经过SSL加密的 
    - HTTPS的作用: 
        1.建立一个信息安全的通道来保证数据传输的安全 
        2.确认网站的真实性, 凡是使用了HTTPS的网站, 都可以通过点击浏览器地址栏的锁头标志来查看网站 认证之后的真实信息, 也可以通过CA机构颁发的安全签章来查询 
        
    # HTTP与HTTPS协议的区别:(背下来) 
    	1)、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 
        2)、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 
        3)、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 
        4)、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
    

    6. TCP与UDP 协议

    # TCP与UDP 
    1.TCP协议:是一种面向连接的, 可靠的, 基于字节流的传输层通信协议 
    	1).有序性: 数据包编号, 判断数据包的正确次序 
    	2).正确性: 使用checksum函数检查数据包是否损坏, 发送接收时都会计算校验和 
    	3).可靠性: 发送端有超时重发, 并由确认机制识别错误和数据的丢失 
    	4).可控性: 滑动窗口协议与拥塞控制算法控制数据包的发送速度 
            
    2.UDP协议: 用户数据报协议, 面向无连接的传输层协议, 传输不可靠. 
    	1).无连接, 数据可能丢失或损坏 
    	2).报文小, 传输速度快 
    	3).吞吐量大的网络传输, 可以在一定程度上承受数据丢失
    
    # ARP协议: 通过IP获取目标计算机mac地址的协议(通过IP找mac)
    

    7. 服务器常见端口

    1.ftp: File Transfer Protocol的缩写, 即文件传输协议. 端口:21 
    2.ssh: Secure Shell的缩写, 用于远程登录会话. 端口:22 
    3.MySQL: 关系型数据库, 端口:3306
    4.MongoDB: 非关系型数据库, 端口:27017 
    5.Redis: 非关系型数据库, 端口:6379
    

    8. 开发准备

    # web端
    
    1. Python3.6 
    2. Pycharm 
    3. Google Chrome
    
    #抓包工具
    fiddler抓包工具
    
    
  • 相关阅读:
    Saltstack module acl 详解
    Saltstack python client
    Saltstack简单使用
    P5488 差分与前缀和 NTT Lucas定理 多项式
    CF613D Kingdom and its Cities 虚树 树形dp 贪心
    7.1 NOI模拟赛 凸包套凸包 floyd 计算几何
    luogu P5633 最小度限制生成树 wqs二分
    7.1 NOI模拟赛 dp floyd
    springboot和springcloud
    springboot集成mybatis
  • 原文地址:https://www.cnblogs.com/xinzaiyuan/p/12381856.html
Copyright © 2011-2022 走看看