py3,mysql爬蟲初試手

附:github源碼
本文以爬取鏈家北京東城區租房信息爲例。
先看一下我的目錄結構:

__pycache__	
db.py	    //簡單封裝操作mysql的工具類
getproxy.py	  //從西刺網獲取免費網絡代理,並存到ip.json中,取用
image.png	
ip.json	//存放免費網絡代理
main.py	//程序主入口
myhtml.py //解析鏈家網的內容獲取需要的信息

其實這個例子沒什麼難的,簡單介紹一下main文件,如果有不理解的地方可以給我留言。
爬去的地址:https://bj.lianjia.com/zufang/dongcheng/

import datetime
from myhtml import getHtml
from db import Db

#實例化db對象
db = Db()
#獲取當前時間
start_time = datetime.datetime.now()

#爬取方法(爬取的頁碼)
def run(page):
    global start_time,datetime
    
    #調用自身時,可以一頁一頁往後爬
    page=page+1
    
    #第一頁地址不加參數,從第二頁開始加參數,pg?就是?頁
    quer = 'pg'+str(page) if page>1 else ''
    url="https://bj.lianjia.com/zufang/dongcheng/"+quer
    
    arr = getHtml(url)
    #arr長度爲0,則證明此頁沒數據,所有頁已爬完,方法返回不再調用自身
    if len(arr)==0:
        db.close()
        print('全爬完,總耗時:',(datetime.datetime.now()-start_time).seconds,'秒')
        return
    
    #這一段是爲了將爬取的數據存入mysql,我沒有好好封裝db類,所以這裏就稍微寫的麻煩一些
    keys=[]
    for i in arr[0]:
        keys.append(i)
    value=[]
    for i in arr:
        tstr = ''
        for idx in keys:
            if isinstance(i[idx],str):
                tstr +='"'+ i[idx]+'",'
            else:
                tstr+='"'+','.join(i[idx])+'",'
        value.append(tstr[:-1])
        # break
    db.insert('beijing',keys,value)
    
    #dos窗口打印信息
    print(page,'頁, ',len(arr),'條數據','over,計時',(datetime.datetime.now()-start_time).seconds,'秒')
    #循環調用自身
    run(page)

run(0)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章