python3:頁(yè)面鏈接檢查

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 = ''  # 需要查詢的頁(yè)面
   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()

腳本說(shuō)明

  1. 功能:采集網(wǎng)頁(yè)上所有鏈接,存入csv。
  • 格式:url - 狀態(tài)碼(如果是301或302,則獲取跳轉(zhuǎn)后的鏈接) - 鏈接文本
  1. 作用
  • 是否存在500、404、301、302等頁(yè)面。
  • 文字鏈接:鏈接文本是否設(shè)置正確;圖片鏈接:查看是否有alt屬性。
  • 部分鏈接是否需要添加rel="nofollow",或添加title=""屬性,或使用JS代替。

擴(kuò)展閱讀:https://searchengineland.com/heres-what-happened-when-i-followed-googlebot-for-3-months-308674

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言: 本人17年應(yīng)屆畢業(yè)生,已入職,剛?cè)肼殯](méi)有太多事情于是整理了一下過(guò)去面試的筆記。很多人覺(jué)得前端不需要或者不會(huì)...
    yozosann閱讀 4,962評(píng)論 3 49
  • HTML標(biāo)簽解釋大全 一、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說(shuō)明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,530評(píng)論 1 41
  • #1 信任體系的構(gòu)建 #2 支付寶的獨(dú)立 #3 出淘 #4 重拾初心 #5 快捷支付 #6 私有化爭(zhēng)議 #7 技術(shù)...
    豆泥A閱讀 832評(píng)論 0 2
  • 酷熱難耐,從立夏之始起,南方的天氣就一天天開(kāi)始悶熱起來(lái),夏至到來(lái)更是熱得人受不了。 行走在烈日下,不用多久身上就汗...
    徐小賤閱讀 694評(píng)論 0 2
  • 看著身邊的朋友都陸陸續(xù)續(xù)結(jié)婚了,雖然心里有些焦急,但還是要保持理智,畢竟結(jié)婚是一輩子的事,緣到自然成。三分天注定,...
    為你傷神閱讀 148評(píng)論 0 1

友情鏈接更多精彩內(nèi)容