python3:页面链接检查

python脚本先贴上

# -*- coding: utf-8 -*-

import requests
import re
from urllib.parse import urljoin
import csv
import chardet

header = {
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
                 'Chrome/70.0.3538.77 Safari/537.36',
}

def web_link_collection(page_url):
   lis = []
   try:
       resp = requests.get(page_url, headers=header, timeout=3)
   except Exception as e:
       print('error:', e)
   else:
       encoding = chardet.detect(resp.content)["encoding"]
       resp.encoding = encoding
       link_list = re.findall(r'<a.*?href=["\'](.*?)["\'].*?>(.*?)</a>', resp.text, re.S | re.I)
       for link in link_list:
           url = urljoin(page_url, link[0])
           sc = url_status(url.strip())
           text = link[1]
           print([url, sc, text])
           lis.append([url, sc, text])
   return lis

def url_status(url):
   try:
       res = requests.get(url, headers=header, allow_redirects=False)
   except Exception as e:
       print('error:', e)
   else:
       sc = res.status_code
       if sc == 301 or sc == 302:
           loc_url = res.headers['Location']
           sc = '%s#%s' % (sc, loc_url)
       return sc

if __name__ == '__main__':
   url = ''  # 需要查询的页面
   lis = web_link_collection(url)

   file = open('result.csv', 'w', encoding='utf-8', newline='')
   cw = csv.writer(file)
   cw.writerow(['URL', 'Status_code', '链接文本'])
   for line in lis:
       cw.writerow(line)
   file.close()

脚本说明

  1. 功能:采集网页上所有链接,存入csv。
  • 格式:url - 状态码(如果是301或302,则获取跳转后的链接) - 链接文本
  1. 作用
  • 是否存在500、404、301、302等页面。
  • 文字链接:链接文本是否设置正确;图片链接:查看是否有alt属性。
  • 部分链接是否需要添加rel="nofollow",或添加title=""属性,或使用JS代替。

扩展阅读:https://searchengineland.com/heres-what-happened-when-i-followed-googlebot-for-3-months-308674

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言: 本人17年应届毕业生,已入职,刚入职没有太多事情于是整理了一下过去面试的笔记。很多人觉得前端不需要或者不会...
    yozosann阅读 10,314评论 3 49
  • HTML标签解释大全 一、HTML标记 标签:!DOCTYPE 说明:指定了 HTML 文档遵循的文档类型定义(D...
    米塔塔阅读 8,725评论 1 41
  • #1 信任体系的构建 #2 支付宝的独立 #3 出淘 #4 重拾初心 #5 快捷支付 #6 私有化争议 #7 技术...
    豆泥A阅读 4,143评论 0 2
  • 酷热难耐,从立夏之始起,南方的天气就一天天开始闷热起来,夏至到来更是热得人受不了。 行走在烈日下,不用多久身上就汗...
    徐小贱阅读 3,762评论 0 2
  • 看着身边的朋友都陆陆续续结婚了,虽然心里有些焦急,但还是要保持理智,毕竟结婚是一辈子的事,缘到自然成。三分天注定,...
    為你傷神阅读 1,184评论 0 1

友情链接更多精彩内容