网站不收录内页是典型的结构性问题:首页在、栏目页在,可一堆内页死活不进索引。这种站往往首页有点权重,深层内容却像被遗忘。解决它不能只盯内容,要从“抓取”和“质量”两条线同时查,缺哪条补哪条。
这条双线思路也适用于其他收录异常。先抓抓取线,确认爬虫到得了内页;再抓质量线,确认到了也愿意收。两条线都过,内页才会进库。
一、抓取线:内页到底被没被爬到
内页不收,第一件事是确认爬虫来没来过。打开平台提供的“抓取诊断”,手动诊断一条典型内页,看返回码、抓取耗时和抓取到的内容。如果诊断显示“未抓取”或返回 301/404,说明爬虫根本到不了这一层。常见原因:内页层级太深(点了四五层才到)、栏目页没有链到内页、或者用了爬虫不执行的 JS 跳转。先把这些“路”修通。
二、抓取线:用内链把内页接出来
很多站的内页是孤岛:只有从栏目翻页才能找到,首页和热门文章都没链它。爬虫的抓取预算有限,孤岛页优先级最低,常常被跳过。下面这段脚本抓一个栏目页,提取里面的内链列表,看看站内到底有没有把深层页链出来。
# 提取栏目页里的内链,判断深层页是否被正确链接出来
import urllib.request, re, urllib.parse
PAGE = "https://www.example.com/column/" # 改成你的栏目页
DOMAIN = "https://www.example.com" # 改成你的站点域名
UA = {"User-Agent": "Mozilla/5.0"}
html = urllib.request.urlopen(
urllib.request.Request(PAGE, headers=UA), timeout=10
).read().decode("utf-8", "ignore")
links = re.findall(r'<a[^>]+href=["\']([^"\']+)["\']', html)
ins = []
for l in links:
a = urllib.parse.urljoin(PAGE, l)
if a.startswith(DOMAIN):
ins.append(a)
print("本页内链数量:", len(ins))
for u in ins[:30]:
print(u)
把 PAGE 换成你的栏目页、DOMAIN 换成站点域名,跑完看内链数量。如果一条栏目页只链出个位数、且没有指向深层文章,说明内链网太稀,爬虫爬不到深处。补法是每篇文章正文里自然链 3 到 5 篇同主题旧文,再给栏目页加“最新/热门”列表,把深层页拉到两层以内。
三、质量线:内页本身够不够收
抓取通了还不准收,就是质量问题。内页最常见的不收诱因:内容过短(一两百字)、和别的页高度重复、纯粹关键词堆砌没有信息量、或者整页是图片没有文字。搜索引擎对“薄内容”页会直接不建索引。判断标准:把内页和同主题已收录的页比,信息增量是否足够、是否解决了某个具体问题。
四、双线都过的验证方法
修完抓取线,看抓取诊断里内页能正常返回 200 且抓到正文;修完质量线,把整改后的内页地址通过链接提交工具主动推送一次。之后以周为单位看索引量里这批地址有没有出现,一般两周内该有反馈。两条线里只要有一条没过,内页就不会稳定进库。
相关阅读:
申请创业报道,分享创业好点子。点击此处,共同探讨创业新机遇!
