從網站上讀取資料失敗
有個自用的工具,從網站上讀取資料。
後來發現讀取的資料不完全。
除錯程式,發現都正常。粗略看了看源程式,也都是對的。又插入許多語句把中間變數寫到檔案中。發現也沒什麼大問題。折騰了很久,無果,就先不管了。
大半年過去了,斷斷續續地偶爾看看程式,也沒找到哪裡出錯了。
前兩天,又著手看看這個程式。添加了一堆除錯程式碼,把一些中間變數寫出到檔案。弄了2天,仍舊沒發現問題在哪。但是檢查了一箇中間變數有時該有資料卻不含資料,於是忽地想到了沒有為它提供資料,也就是讀取下來的網頁中不含有效資料,而且根據以前debug方式總是都對,應該是批量讀取網頁時會不確定地某些網頁讀取失敗。於是添加了程式碼,把某個網頁的讀取結果寫入檔案,然後在正常情況下(不能用debug方式單步去看)批量地讀網頁,果然那個網頁是一個“拒絕訪問”的網頁,不含正常資料。
反思一下為什麼這個問題這麼久才搞清楚。一是程式的程式碼流程複雜,啟動了新的執行緒去讀網頁,用了若干個類,分別處理不同的職責,所以完全檢查程式的流程正確相當費時,就一直懷疑程式流程中哪兒有問題,沒重點考慮外部原因。二是該網站以前返回資料還是挺快速可靠的,大概是最近才加入了拒絕異常訪問的功能。
總之,重構、保持可維護性很重要。
相關推薦
從網站上讀取資料失敗
有個自用的工具,從網站上讀取資料。 後來發現讀取的資料不完全。 除錯程式,發現都正常。粗略看了看源程式,也都是對的。又插入許多語句把中間變數寫到檔案中。發現也沒什麼大問題。折騰了很久,無果,就先不管了。 大半年過去了,斷斷續續地偶爾看看程式,也沒找到哪裡出錯了。 前兩天,又著手看看這個程式。
從TcpSocket上讀取資料的三種方式
我在一個專案中碰到了一個TcpSocket的應用。在java程式中使用TcpSocket同本機的一個服務進行程序間的通訊。由於通訊路徑只是單機並沒有經過網路,因此兩個程序之間的互通相對與網路傳輸是比較快速的。因此,程序間的互動使用瞭如下方式:(見上傳圖片)讓我們看一下程式碼實
第七章7.1 資料清洗--將從網站上爬去的資料進行清洗然後轉為2-grams序列輸出
#!/usr/bin/env python # _*_ coding:utf-8 _*_ import re import string from collections import OrderedD
Hadoop的Mapper是怎麼從HDFS上讀取TextInputFormat資料的
LineRecordReader.next(LongWritable key, Text value) LineReader.readLine(Text str, int maxLineLength, int maxBytesToConsume) DataInputS
從網站上抓住相應資料至excel
import java.io.File; import java.io.IOException; import java.util.List; import java.util.concurrent.TimeUnit; import jxl.Workbook; import
live555從RTSP伺服器讀取資料到使用接收到的資料流程分析
本文在linux環境下編譯live555工程,並用cgdb除錯工具對live555工程中的testProgs目錄下的openRTSP的執行過程進行了跟蹤分析,直到將從socket端讀取視訊資料並儲存為對應的視訊和音訊資料為止。 進入testProgs目錄,執行./openRTSP rtsp://
Centos6安裝圖形介面(hdp不需要,hdp直接從github上下載資料即可)
CentOS 6.5 安裝圖形介面 安裝的時候沒有安裝影象介面。安裝步驟如下: 1.yum -y groupinstall Desktop 2.yum -y groupinstall "X Window System" 3.init 5 由字元介面切換到圖形介面可用兩種簡單方法實現: 1、在字元介面
python 從檔案中讀取資料,同時去除掉空格和換行
從檔案中讀取資料,同時去除掉空格和換行,程式碼如下 import numpy as np def sort(path): w = open(path,'r') l = w.readlines() col=[] for k in l: k = k.strip('\n')
某求職網站上關於資料分析師崗位的分析
考察的知識點:Excel函式、圖表、資料透視表 這是一份某求職網站上關於資料分析的資料 求每家公司的最高薪資和最低薪資以及平均薪資 最低薪資:=IF(D2="","",LEFT(D2,FIND("k",D2)-1)) &
怎麼理解Get是用來從伺服器上獲得資料
說實話第一次看見你這個問題,我也蒙了,這麼坑爹的話,你從哪裡看到的?不會是哪本坑爹的書吧。我百度了下,百度文庫裡面有一個文件,還是第一頁= =,害人子弟。對於第一句“Get是用來從伺服器上獲得資料”你可以忽略了,不管別人怎麼認為,反正我認為這是坑爹的,更是坑害新手的。 jsp中get和
hbase 從hdfs上讀取數據到hbase中
-c .lib tput bytes pre jar包 pin 實例 ++ 1 <dependencies> 2 <dependency> 3 <groupId>org.apache.hbase</g
hbase 從hdfs上讀取資料到hbase中
1 <dependencies> 2 <dependency> 3 <groupId>org.apache.hbase</groupId> 4 <artifactId>hbase-client&l
圖片或檔案上傳到伺服器或從伺服器上讀取(圖片可根據路徑src回顯展示,從伺服器上讀出來)
不需要配置虛擬路徑,存的時候資料庫裡只存了圖片的名稱(隨機重新命名的形式),存在指定伺服器上,取的時候也是根據圖片名稱從伺服器上找到,並用OutputStream 讀出來 前臺頁面(用的bootstrap): html程式碼(可回顯,回顯的時候也是去後臺根據路徑查詢到圖片):
從.resx檔案讀取資料
//.resx檔案讀取,檔案為內容 private string languageResx(string language, string key) { string filename; switch (la
如何從資料庫服務讀取資料
1:背景 在從資料庫服務data讀取(以下簡稱data)之前,首先需要確保自己的服務(假設服務名為fegin-demo)是正常能向Eureka註冊中心註冊的,註冊步驟如下: 將 src/main
從PCD檔案讀取資料
首先寫c++檔案 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h>
Android Studio平臺下使用hellochart實現從txt檔案讀取資料繪折線圖
Android Studio平臺下使用hellochart實現從文字讀取資料繪折線圖 本人是一個剛剛接觸Android不超過兩個月的小白,最近在做的論文是關於這一塊的相關內容。所有的東西都是自學的,聽導師的建議也是第一次留個這樣的資料,可能有很多地方理解不到位,
springboot~openfeign從JSON檔案讀取資料
對於openfeign來說,幫助我們解決了服務端呼叫服務端的問題,你不需要關心服務端的URI,只需要知道它在eureka裡的服務名稱即可,同時你與服務端確定了服務方法的引數和返回值之後,我們可以在單元測試時mock這些服務端方法即可,真正做到了單元測試,而不需要與外界資源進行互動。 今天主要說一下在op
Prefuse學習(二)從資料庫中讀取資料
prefuse是一個非常不錯的開源視覺化專案,尤其是用在social network/complex network上,個人感覺要比jung好。不過可惜的是,prefuse的user manual還在建
C語言fread()函式:讀檔案函式(從檔案流讀取資料)
相關函式:fopen, fwrite, fseek, fscanf標頭檔案:#include <stdio.h>定義函式:size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);函式說