目标:
    1:掌握 python 怎么对 url 字符串进行 MD5 加密
    2:掌握MySQL 增量式爬虫的实现逻辑
    3:掌握MySQL 增量式爬虫的具体实现思路

    一:python 怎么对 url 字符串进行 MD5 加密

    什么是MD5加密:就是将一串字符重新加密为定长32的唯一字符串(常常用作 url 加密)

    为什么要对 url 进行MD5加密:因为有的 url 长度太长在实现增量式爬虫时的mysql url指纹库不好控制,所以进行MD5加密

    实现语法:

    from hashlib import md5 → 导入md5模块(标准库模块)
    s = md5() → 创建一个md5对象
    s.update( url.edcode()) → 对 url 进行md5加密
    加密结果 = s.hexdigest() → 获取加密后的十六进制url字符串

    注意事项:一段字符经过md5加密之后结果是16进制字符串,那么相同的这段字符在经过md5加密,形成的16进制字符串是不变的

    代码体验:

    image.png

    二:MySQL 增量式爬虫的实现逻辑

    增量式爬虫的背景:假设爬取新闻网站资源,今天把所有的新闻全部爬取下来了,第二天网站又更新了几条新闻,这时我们只需要爬取更新的新闻即可,这就是做增量式爬虫的目的

    增量式实现逻辑:创建一个 mysql 网站指纹数据表,将爬取过的 url(看情况确定是一级url 还是二级url) 经过 md5 加密之后保存进数据表,以后在爬取数据时先将待爬取的 url 与指纹数据表里面的加密url进行比对,如果url已经存在指纹数据表内,那么就停止爬取,没有则继续爬取

    三:MySQL 增量式爬虫的具体实现思路

    第一步:创建 mysql 指纹数据表

    语法:

    create database 数据库名 charset=utf8;
    create table 数据表名( 字段名 char(32) not null )charset=utf8;

    第二步:在向指定 url 服务器发送请求之前,先将url与mysql数据指纹库里面的url进行比对,没有一样的在发送请求

    部分语法:

    游标对象.execute(select * from 指纹数据表名)
    url_tuple = 游标对象.fetchall()
    if url in url_tuple:
    退出程序
    else:
    继续爬取

    注意事项:url_tuple =游标对象.fetchall() 语法获取的数据是元组嵌套,但是没关系,不管是元组还是元组的嵌套 in 关键字都可以判断指定数据是否在里面!!

    第三步:如果判断 url 不在 url数据指纹库内,则爬取数据完成后,将这个url经过md5加密后写入到数据指纹库里面!!