增量爬虫Mysql
定义:每次爬取只抓取新更新的链接,之前抓取过的链接不会再继续抓取
实现思路 MySQL:
1、MySQL中新建指纹表,用来存储所有爬取过的链接的指纹
2、在爬取任何链接之前,先判断该指纹是否存在于指纹表,如果已存在则不在进行爬取
注意:
对于常规网站来说,新更新的数据一般会在最前面。比如说新闻类网站(新更新的新闻会在页面顶部)、电商类网站、房产类网站等
所以、一旦检测到有链接已经爬取过的,则无需继续再检测之后的链接,终止程序即可
知识点补充:
1、给url地址进行md5加密生成指纹
from hashlib import md5
s=md5()
s.update(url.encode())
finger=s.hexdigest()
2、pymysql模块执行查询语句后的结果
import pymysql
cursor.execute('select * from carab')
#fetchall()得到的结果为元祖
result=cursor.fetchall()
步骤:
1、创建数据库表(只爬取车的名字)
CREATE DATABASE cardb CHARSET utf8;
USE cardb;
CREATE TABLE request_finger(
finger CHAR(32)
)CHARSET=utf8;
CREATE TABLE carab(
NAME VARCHAR(100)
)CHARSET=utf8;
2、爬取程序(自行填入自己的数据库密码)
import urllib.request
import re
import time
import random
import pymysql
from hashlib import md5
import sys
class CarSpider: