一、参考资料

爬虫增量抓取

二、概念

聚焦爬虫:每天对特定的网站进行数据抓取;
增量爬虫:通过监测网站更新的情况,只抓取最新数据的一种方式。

三、方法

第一次:抓取所有的url ,存入数据库中,并为每一个 url 生成专属的“指纹”。
之后:当网站更新后,程序只会对数据库中不存在的指纹进行抓取。

四、关键代码实现

1) 建库建表

将抓取的数据的存放至 MySQL 数据库,需要先进行建库建表操作。注意,这里需要将 url 指纹单独存放在一张表中,如下所示:

create database movieskydb charset utf8; use movieskydb; create table request_finger(finger char(60))charset=utf8; create table movieinfo(moviename varchar(300),downloadaddr varchar(600))charset=utf8;

2) url指纹生成

您可以使用 Python 内置模块 md5 来生成加密“指纹”,如下所示。

导入模块

from hashlib import md5

待加密url

url=”https://www.dytt8.net/html/gndy/dyzz/20210226/61131.html

生成MD5对象

secret = md5()

加密url

secret.update(url.encode())

提取十六进制的加密串

finger = secret.hexdigest() print(finger)

输出结果: 2d5e46ee52756e8ae59c9ba42230b883

3)判断数据库中是否有url指纹

4.判断链接是否已经抓取过

def is_hold_on(self,finger):

查询数据库

sql=’select finger from request_finger where finger=%s’

execute()函数返回值为受影响的行数(即0或者非0)

  1. r = self.cursor.execute(sql,[finger])

如果为0表示没有抓取过

if not r: return True

4)插入数据

插入数据库

sql =’insert into movieinfo values(%s,%s)’

L = list(film_list[0]),executemany可以直接插入一个list的数据,execute只能插入一个数据

self.cursor.executemany(sql,film_list) self.db.commit()