一、参考资料
二、概念
聚焦爬虫:每天对特定的网站进行数据抓取;
增量爬虫:通过监测网站更新的情况,只抓取最新数据的一种方式。
三、方法
第一次:抓取所有的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)
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()
