zoukankan      html  css  js  c++  java
  • Python之爬虫的理解

    #  -*- coding: utf-8 -*-  中文用户一定先用这行来声明编码方式

    爬虫: 爬虫是自动访问互联网,并且提取数据的程序  (从网络上获取非结构化的数据,ETL将这些数据转换为结构化数据存储,然后做分析挖掘)

        爬虫的核心,是页面规律的探索和反爬机制的处理

        爬虫的价值,互联网数据为我所用

          轻量级的爬虫,是静态网页数据的抓取,是除了需要登录和Ajax异步加载之外的爬虫

    爬虫的开发: 确定目标 --- 分析目标 --- 编写代码 --- 执行爬虫

          目标网站的格式,是在不停升级的,爬虫的抓取策略也需要做相应升级

    爬虫的一般架构:

         1. 调度器  启动爬虫

       2. URL管理器  管理等待抓取URL和已经抓取URL的集合,防止循环和重复抓取

          ( 实现方式: 内存中的set集合,关系数据库的表,缓存数据库redis等)

       3. 网页下载器  爬虫的核心部分,主要是urllib/requests模块

          ( 实现方式: 无参 urlopen()+response.read(), 有参 Request()对象+urlopen()+response.read(), 各类handler+opener+install_opener()+urlopen() )

       4. 网页解析器  主要是BeautifulSoup、lxml 、html.parser、正则表达式,前三种是结构化解析,正则是模糊匹配

          (beautifulSoup,可以解析html和xml, pip install beautifulSoup4,  import bs4)

          在BeautifulSoup中,# 是id选择器, . 是css选择器

    爬虫的最终结果: json或者list

       Pandas是后续ETL主要使用的

    Python格式化输出的两种方式:

       占位符: %s  %d  %f...    print('His name is %s and he is %d year old' %('Daivd', 18))

                      print("I am %(name)s age %(age)d" % {"name": "Alex", "age": 18})

       Format方式:    print("i am {}, age {}, {}".format("seven", 18, 'alex'))

                  print("I am {0}, age {1}, really {0}".format("Steven", 18))

                  print("I am {name}, age {age}, really {name}".format(name="steven", age=18))

      

  • 相关阅读:
    win10 访问远程文件夹 此共享需要过时的SMB1协议 你不能访问此共享文件夹
    Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user'
    MySQL 密码参数配置与修改 validate_password
    MySQL 命令行下更好的显示查询结果
    MySQL 数据库的存储结构
    MySQL实验 内连接优化order by+limit 以及添加索引再次改进
    MySQL实验 子查询优化双参数limit
    MySQL 索引结构 hash 有序数组
    MySQL 树形索引结构 B树 B+树
    hbase2.1.9 centos7 完全分布式 搭建随记
  • 原文地址:https://www.cnblogs.com/lynhou/p/8398241.html
Copyright © 2011-2022 走看看