目标:
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进制字符串是不变的
代码体验:

二: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加密后写入到数据指纹库里面!!
