python抓蟲程式應用

了解了抓蟲範例的基本程式之後,在這一個小節中我們來做一些應用。
  1. 這一個檔案是要讓同學們使用抓蟲程式抓取的一個檔案

    下面的內容之中提供了8個子連結的節點,其中前3個是HTML檔案,後面5個是pdf檔案。在我們的練習當中希望同學們能夠寫出一個抓蟲程式,把後面的5個pdf檔案擷取到自己的電腦。
    1. CP1-VPY-1.html
    2. CP1-curve.html
    3. CP1L.html
    4. PYTHON-RUN-1.pdf
    5. PYTHON-RUN-2.pdf
    6. PYTHON-RUN-3.pdf
    7. PYTHON-RUN-4.pdf
    8. PYTHON-YC-1.pdf
    我們所提供的參考抓取程式如下,但是同學們可以有自己的設計。

    # coding=Big5
    # 引入 requests 模組
    import requests
    # 使用 GET 方式下載普通網頁
    #url='https://www.google.com.tw/'
    url = "https://physexp.thu.edu.tw"
    url = "https://physexp.thu.edu.tw/~AP/YC/COD/SCRBK"
    pt = 'https://physexp.thu.edu.tw/~AP/YC/COD/SCRBK/'
    r = requests.get(url,'utf-8')
    print('r.url=',r.url)
    # 伺服器回應的狀態碼
    print(r.status_code)
    # 檢查狀態碼是否 OK
    if r.status_code == requests.codes.ok:
      print("OK")
    # 輸出網頁 HTML 原始碼
    #print(r.text)
    s=r.text
    b=r.content
    L2=b.split(b'\n')
    FW1=open('COD1.html','w',encoding='UTF-8')
    FW1.write(s)
    FW1.close()
    FW2=open('COD2.html','wb')
    FW2.write(b)
    FW2.close()
    print('FW2.write is done')
    
    FW3=open('COD3.html','wb')
    nn=0; Lpdf=[]; LNAM=[]
    for j in L2:
        if(b"href" in j and b'HTML' in j and b'pdf' in j):
            nn+=1
            #print(nn,j[0:280])
            FW3.write(j+b'<br>\n')
            Lj = j.split(b'"')
            print('Lj=',Lj)
            sj=Lj[1].decode("utf-8")
            tsj=sj.split('/')
            psj="'"+pt+sj+"'"
            psj=pt+sj
            print(nn,psj,tsj[1])
            Lpdf.append(psj)
            LNAM.append(tsj[1])
    FW3.close()
    print('FW3 is done')
    print('LNAM=',LNAM)
    
    nn=0
    for j in Lpdf:
        url = "https://physexp.thu.edu.tw/~AP/YC/COD/HTML/GP2-L21-pq.pdf"
        url=Lpdf[nn]
        nam=LNAM[nn]
        print(nn,url,nam)
        r = requests.get(url,'utf-8')
        print(r.status_code)
        if r.status_code == requests.codes.ok: print("OK")
        s2=r.text
        b2=r.content
        FW5=open(nam,'wb')
        FW5.write(b2)
        FW5.close()
        nn+=1
    
    
    請仔細查看每一個抓取回來的檔案內容。
    
  2. 學習重點2:l

    請試著抓取上述程式中子連結(html)和圖形檔案(png)。

    
    
    
    



作業


SCRAP-2,抓蟲程式應用習題