記一次讀取資料的經歷

2022-02-15 08:24:02 字數 3519 閱讀 7186

乙個研究生同學因為學習需要,想提取乙個**的資料,然後把這些資料都放入excel當中。

剛開始我很不在意,以前什麼樣的爬蟲沒見過,這次不過是要把資料放入excel中而已。

於是我在網上找到乙個結合php生成excel的工具——phpexcel

然後寫了乙個簡單的程式,結果!!!失敗了= =

1.需要讀取的資料太多,一共1400多個網頁需要讀取(也許我太笨,沒找到一次讀取資料的介面)。

2.那個**的伺服器太差,開啟乙個網頁需要很長時間,而且經常出現請求超時的情況。

3.上面找的那個生成excel的工具不適合讀取這麼多的資料。

1.關於生成excel。我看了一下phpmyadmin,找到了乙個將資料庫匯出為excel的功能,而且匯出的速度很快,於是我打算先把資料寫入mysql中。

2.針對請求超時。剛開始每次超時我都重新執行一下程式,這樣做實在太浪費時間了。於是我在程式中,每次超時都重新讀取一次網頁,最多讀3次,否則在資料庫中寫入空的資料,然後讀下乙個網頁。結果發現,這樣做的成功率幾乎是100%。

<?php

//避免程式執行30秒後停止

ini_set('max_execution_time', '0');

header("content-type: text/html; charset=utf8");

//連線資料庫

$conn=mysql_connect("localhost","root","")or die("連線錯誤");

mysql_select_db("newdb",$conn);

mysql_query("set names 'utf8'");

//讀取網頁超時時間

'timeout'=>15,//單位秒

)

);for($i = 1; $i<143; $i++)

}echo "success!";

?>

如果有讀取失敗,或者讀取錯誤的資料,只要用下面的程式讀取更新資料即可。

<?php

//避免程式執行30秒後停止

ini_set('max_execution_time', '0');

header("content-type: text/html; charset=utf8");

//連線資料庫

$conn=mysql_connect("localhost","root","")or die("連線錯誤");

mysql_select_db("newdb",$conn);

mysql_query("set names 'utf8'");

//讀取網頁超時時間

'timeout'=>2,//單位秒

)

);$cnt=0;

while($cnt<3 && ($str=file_get_contents("", false, stream_context_create($opts)))===false)

$str = iconv("gb2312", "utf-8//ignore",$str);

preg_match_all('/(?<=\().+?分/', $str, $arr);

preg_match_all('/(?<=:).+?(?=<)/', $str, $arr2);

$sql = "update report set b1='".$arr[0][0]."',

c1='".$arr[0][1]."',

d1='".$arr2[0][5]."',

e1='".$arr2[0][6]."',

f1='".$arr2[0][7]."',

g1='".$arr2[0][8]."',

h1='".$arr2[0][9]."',

i1='".$arr2[0][10]."',

j1='".$arr[0][8]."',

k1='".$arr2[0][11]."',

l1='".$arr2[0][12]."',

m1='".$arr2[0][13]."',

n1='".$arr2[0][14]."',

o1='".$arr2[0][15]."',

p1='".$arr[0][14]."',

q1='".$arr2[0][16]."',

r1='".$arr2[0][17]."',

s1='".$arr2[0][18]."',

t1='".$arr[0][18]."',

u1='".$arr2[0][19]."',

v1='".$arr[0][20]."',

w1='".$arr2[0][20]."',

x1='".$arr2[0][21]."',

y1='".$arr2[0][22]."',

z1='".$arr[0][24]."',

a2='".$arr[0][25]."',

b2='".$arr2[0][23]."',

c2='".$arr2[0][24]."',

d2='".$arr[0][28]."',

e2='".$arr2[0][25]."',

f2='".$arr2[0][26]."',

g2='".$arr[0][31]."',

h2='".$arr2[0][27]."',

i2='".$arr2[0][28]."',

j2='".$arr2[0][29]."',

k2='".$arr[0][35]."',

l2='".$arr[0][36]."',

m2='".$arr2[0][30]."',

n2='".$arr2[0][31]."',

o2='".$arr[0][39]."',

p2='".$arr2[0][32]."',

q2='".$arr[0][41]."',

r2='".$arr2[0][33]."',

s2='".$arr2[0][34]."',

t2='".$arr[0][44]."',

u2='".$arr[0][45]."',

v2='".$arr2[0][35]."',

w2='".$arr2[0][36]."',

x2='".$arr2[0][37]."',

y2='".$arr2[0][38]."',

z2='".$arr2[0][39]."',

a3='".$arr[0][51]."',

b3='".$arr[0][51]."',

c3='".$arr2[0][40]."',

d3='".$arr[0][41]."'

where a1='星星科技(300256)'";

mysql_query($sql,$conn);

?>

記一次面試經歷

今早七點半的巴士從中山趕到廣州面試php開發助理,以前面的都是十來人 幾十人的小公司,不少還是培訓公司,坑的一逼!這次的公司不錯,比較正規,好歹上百人了,只是筆試題做得一般,題目有的雖有學過,但忘了,好吧!這就是沒準備充分的緣故!下面羅列下我還記得的題目 有些漏了就沒辦法了 之後hr面試聊了下,雖然...

記一次重構經歷

起因 最近因為公司內部對各個業務線的使用者業務進行統一剝離,形成使用者中心,所有使用者相關的業務和資料都落地到使用者中心,各個業務線以rpc的的形式依賴使用者中心的服務。結果 因為我的疏忽,造成了兩個bug沒有被測試出來。總結改進 這兩個bug的產生的原因都是因為我錯誤地估計了回歸測試的範圍,我的想...

記一次makefile的經歷

哎呀,剛接觸makefile 和 linux 不久,搞得很多c 的東西都拋諸腦後了,真的慚愧喲。這是我的檔案目錄 實際開發最好不要這樣命名檔案,否則到之後自己都不知道這些檔案都是幹嘛的 一開始的源 1 標頭檔案 include using std cout using std endl extern...