Python腳本檢測網站鏈接是否存在

来源:http://www.cnblogs.com/shouce/archive/2016/04/07/5362048.html
-Advertisement-
Play Games

早就聽說Python語言操作簡單,果然名不虛傳,短短幾句,就實現了基本的功能。 要檢測目標網站上是否存在指定的URL,其實過程很簡單: 1、獲得指定網站網頁的HTML代碼 2、在HTML代碼中查找指定的URL 3、如果存在,OK;否則,Error 整個程式引用了兩個lib庫,urllib2和sgml ...


早就聽說Python語言操作簡單,果然名不虛傳,短短幾句,就實現了基本的功能。

要檢測目標網站上是否存在指定的URL,其實過程很簡單:

1、獲得指定網站網頁的HTML代碼

2、在HTML代碼中查找指定的URL

3、如果存在,OK;否則,Error

 

整個程式引用了兩個lib庫,urllib2sgmllib

urllib2庫主要定義了一些訪問URL(基本通過HTTP)的函數與類。

sgmllib庫主要負責解析HTML代碼。

 

複製代碼  1 import urllib2
 2 from sgmllib import SGMLParser
 3 
 4 class URLLister(SGMLParser):
 5     def reset(self):
 6         SGMLParser.reset(self)
 7         self.urls = []
 8 
 9     def start_a(self,attrs):
10         href=[v for k,v in attrs if k=='href']
11         if href:
12             if (href[0].count('http://網站URL')==1):
13                 self.urls.extend(href)
14 
15 
16 links = ['http://www.google.com/',
17          'http://www.baidu.com',
18          'http://www.sohu.net',
19          'http://www.163.com',
20          'http://www.cnblogs.com',
21          'http://www.qq.com',
22          'http://www.yahoo.com/',
23          'http://www.bing.com/',
24          'http://www.360.com',]
25 
26 for eachlink in links:
27     f = urllib2.urlopen(eachlink)
28     if f.code ==200:
29         parser = URLLister()
30         parser.feed(f.read())
31         f.close()
32         if (len(parser.urls)>=1):
33             print 'The link from '+eachlink+' is OK!'
34         else:
35             print 'The link from '+eachlink+' is ERROR!' 複製代碼

 

這其中幾個主要函數:

1、urllib2.urlopen(url[, data][, timeout])//打開一個URL

2、SGMLParser.feed(data) //獲得需要解析的HTML數據

3、SGMLParser.start_tag(attributes) //指定需要解析的HTML標簽,在本程式中,我們調用了start_a,說明我們需要解析HTML代碼中<a>標簽。通過查找<a>標簽中href屬性的value,可以獲得該網頁上所有鏈接的信息,只要我們指定的URL存在,就OK了。

 

這其實是一個很小的腳本,但也讓我激動不已。一來,我已經跨進了Python的世界,並用它解決了實際工作中的問題,二來,它的簡單語法、縮進格式著實讓我眼前一亮。今後,希望能夠多多使用Python,解決實際工作中的種種問題,做到學以致用


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服務端組件、客戶端組件和 Agent 組件,廣泛適用於各種不同應用場景的 TCP/UDP 通信系統,提供 C/C++、C#、Delphi、E(易語言)、Java、Python 等編程語言介面。HP-Socket 對通信層實現完全封 ...
  • 前兩天給同事做 code review,感覺自己對 Java 的 Generics 掌握得不夠好,便拿出 《Effective Java》1 這本書再看看相關的章節。在 Item 24:Eliminate unchecked warnings 這一節中,作者拿 ArrayList 類中的 publi ...
  • XML概述 XML概述 XML的歷史背景 XML的歷史背景 GML(1969):通用標記語言 IBM公司的一些專家們一起研究的一個課題: 軟體必須有高度的可移植性,而且必須有一個統一的標準。為了實現軟體的一處編寫多處運行這個願景所誕生。 SGML(1985):專家們對GML升級,標準的通用標記語言。 ...
  • 輸出空心的菱形圖案,這在等級考試與公司面試時也出現過類似題目,本範例的目的在於熟練掌握 for 迴圈的嵌套使用。 創建 Diamond 類,在該類的主方法中調用 printHollowRhombus() 方法完成 10 行的空心菱形輸出。其中 printHollowRhombus() 方法是在範例中 ...
  • 列表生成式 List Comprehensions 列表生成式是Python內置的非常簡單卻強大的可以用來創建list的生成式。 簡單的數值範圍的list可以使用一下方式生成: 稍微複雜的可以利用list生成式: 迴圈後面還可以加上if判斷,例如僅篩選出偶數的平方: 使用兩層迴圈可以生成全排列: 生 ...
  • springboot是用來快速搭建微服務的框架,spring出品,必屬精品。 關於微服務與springboot的更多介紹,參考 使用Spring Boot創建微服務 spring提供了項目剛開始搭建的腳手架網站,可以線上生成空白demo。提供了maven和gradle兩種項目管理方式。 一直使用Ma ...
  • 創建springboot的Maven模塊。 對於Maven管理的項目,還是習慣於多模塊。將項目結構做下調整。 1。修改springboot項目的pom文件。 將springboot項目作為頂級項目。在此基礎上,新建Maven模塊項目web-rest模塊。 IntelliJ IDEA會自動給我們spr ...
  • 切片 Python提供了切片操作符,可以對list、tuple、字元串進行截取操作。 list中的切片應用 語法如下: tuple中切片的應用 tuple也是一種list,唯一區別是tuple不可變。因此,tuple也可以用切片操作,只是操作的結果仍是tuple: 字元串中切片的應用 字元串'xxx ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...