爬虫技巧与细节

爬虫在使用场景中的分类:
    - 通用爬虫
        抓取系统重要组成部分。抓取的是一整张页面的数据。
    - 聚焦爬虫
        是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。
    - 增量式爬虫
        检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。

爬虫的矛与盾:
    - 反爬机制
        门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
    - 反反爬策略
        爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而获取门户网站中的相关数据。

http协议:
    - 概念:服务器与客户端进行数据交互的一种形式。
    - 常用请求头信息:
        (1)User-Agent:请求载体的身份标识。
        (2)Connection:请求完毕后,是断开连接还是保持连接。
    - 常见响应头信息:
        (1)Content-Type:服务器响应回客户端的数据类型

https协议:
    - 概念:安全的超文本传输协议
    - 加密方式
        (1)对称密钥加密
        (2)非对称密钥加密
        (3)证书密钥加密

requests模块:python中原生的一款基于网络请求的模块,功能强大,简单便捷,效率极高。
    - 作用:模拟浏览器发请求
    - 如何使用
        (1)指定url
        (2)发起请求(Get or Post)
        (3)获取响应数据
        (4)持久化存储

动态加载数据:
    网页信息可能是动态加载的,ajax动态请求,可以在XHR中查看真正url

数据解析:
    - 正则
    - bs4
    - xpath(***)

数据解析原理:
    大部分文本内容都存在标签中或者标签对应的属性中
    进行指定标签定位
    标签或标签对应的属性中存储的数据值进行提取(解析)

聚焦爬虫编码流程:
    - 指定url
    - 发起请求
    - 获取响应数据
    - 数据解析
    - 持久化存储

正则表达式:(import re)
    - 单字符:
        . : 除换行以外的所有字符
        [] : [aoe] [a-w] 匹配集合任意一个字符
        \d : 数字 [0-9]
        \D : 非数字
        \w : 数字,字谜,下划线,中文
        \W : 非\w
        \s : 所有的空白字符,包括空格,制表符,换页符等等。等价于 [\f\n\r\t\v]
        \S : 非空白
    - 数量修饰:
        * : 任意多次 >=0
        + : 至少依次 >=1
        ? : 可有可无,0次或1次
        {m} : 固定m次 hello{3, }
        {m,} : 至少m次
        {m,n} : m-n次
    - 边界:
        $ : 以某某结尾
        ^ : 以某某开头
    - 分组:
        (ab)
    - 贪婪模式: .*
    - 非贪婪模式: .*?
    - re.I: 忽略大小写
    - re.M: 多行匹配
    - re.S: 单行匹配
    - re.sub(正则表达式,替换内容, 字符串)

    <div class="pic">
          <a href="https://www.douban.com/photos/album/1727324287/">
          <img src="https://img1.doubanio.com/view/photo/albumcover/public/p2578730628.webp"
          data-origin="https://img1.doubanio.com/view/photo/albumcover/public/p2578730628.webp" alt="">
          </a>
      </div>

    ex = '<div class="pic">.*?<img src=.*? data-origin="(.*?)" alt=.*?</div>'

bs4进行数据解析:
    - 数据解析原理:
        标签定位
        提取标签、标签属性的数据值
    - bs4数据解析原理:
        1.实例化一个BeautifulSoup对象,并将页面源码数据加载到该对象中
        2.通过调用BeautifulSoup对象中相关属性或者方法进行标签定位和数据提取
    - 进行环境的安装:
        pip install bs4
        pip install lxml
    - 如何实例化BeautifulSoup对象:
        1.from bs4 import BeautifulSoup
        2.对象的实例化
            - 将本地的html文档中的数据加载到该对象中
                fp =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值