参考资料

  1. Html转JS有哪些
  2. HTML/MarkDown互转有哪些
  3. HTML 用于短的引用
  4. 不同浏览器的禁用方法
  5. html内嵌框架标签详细说明以及案例
  6. Html表格生成器有哪些
  7. HTML 布局
  8. HTML 段落

如何判断一个网站是否被采集

如何判断一个网站是否被采集?

1. 检查内容重复性(Python示例)

使用 difflibfuzzywuzzy 检测相似度:

from difflib import SequenceMatcher

def check_similarity(text1, text2):
    similarity = SequenceMatcher(None, text1, text2).ratio()
    return similarity > 0.8  # 相似度超过80%可能是采集

text1 = "原创文章内容..."
text2 = "疑似采集内容..."
print(check_similarity(text1, text2))  # 返回 True 或 False

2. 检测页面结构(Python + BeautifulSoup)

采集站通常有固定的HTML结构:

import requests
from bs4 import BeautifulSoup

def check_page_structure(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    # 检查是否有大量重复的 div/class
    divs = soup.find_all('div')
    if len(divs) > 100:  # 异常多的 div 可能是采集站
        return True
    return False

print(check_page_structure("https://example.com"))

3. 检查发布时间(Python + 爬取时间对比)

采集站通常批量发布,时间间隔短:

import requests
from datetime import datetime

def check_publish_times(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    times = [datetime.strptime(time.text.strip(), "%Y-%m-%d") for time in soup.select('.publish-time')]
    time_diffs = [(times[i+1] - times[i]).seconds for i in range(len(times)-1)]
    avg_diff = sum(time_diffs) / len(time_diffs)
    return avg_diff < 60  # 平均发布时间间隔 <60秒可能是采集

4. 检测图片水印(Python + OpenCV)

采集站可能保留原站水印:

import cv2
import numpy as np

def check_watermark(image_path):
    img = cv2.imread(image_path)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray, 50, 150)
    contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    return len(contours) > 100  # 边缘检测到大量轮廓可能是水印

5. 检查外链来源(Python + 爬取外链)

采集站可能引用大量外部链接:

def check_external_links(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    external_links = [a['href'] for a in soup.find_all('a', href=True) if "example.com" not in a['href']]
    return len(external_links) > 20  # 外链过多可能是采集站

总结

检测方法代码示例判断依据
内容相似度检测difflib相似度 >80%
页面结构分析BeautifulSoup大量重复 div
发布时间间隔datetime平均间隔 <60s
图片水印检测OpenCV边缘轮廓过多
外链数量检查requests外链 >20

适用场景:  

  • SEO 分析(判断网站是否采集)

  • 反爬虫策略(防止内容被批量抓取)

  • 内容原创性验证(识别抄袭)

进阶方法:  

  • 机器学习分类(训练模型识别采集站)

  • 流量日志分析(检测异常访问模式)

  • DNS 历史查询(判断域名是否频繁更换)

这些方法结合使用,可以较准确地判断网站是否被采集。