LynHou

导航

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))

 

 

 

 

 

  

posted on 2018-02-01 13:46  LynHou  阅读(177)  评论(0编辑  收藏  举报