Python Reptil kleines Beispiel: Kletterdatenbestand

Im früheren Blog führten wir die Raupen kriechen Hochschulrankings, dieses Blog wir das Programm einführen Bestandsdaten zu klettern.

Programm Quelle: China University of MOOC Network " Web - Crawler und Informationsextraktion Programm ."

Ziel des Programm: Holen Sie sich den Shanghai Stock Exchange und der Shenzhen Stock Exchange ist Teil der Bestandsinformationen, Ausgabe in eine Datei.

Lesen Sie die folgenden Programmanforderungen im Voraus um die Bibliothek zu wissen, BeautifulSoup Bibliothek und Re - Bibliothek, in dem „ Web - Crawler und Informationsextraktion Programm “ hat relevantes Wissen zur Verfügung gestellt.

Importanfragen 
von bs4 importieren BeautifulSoup 
importieren re 


def getHTMLText (url, code = "utf-8"): 
    try: 
        r = 
        request.get ( url) r.raise_for_status () 
        r.encoding = code # Geben Sie die Dekodierung direkt mit utf-8 an 
        return r.text 
    außer: 
        return "" 


def getStockList (lst, stockURL): 
    html = getHTMLText (stockURL, "GB2312") # Das Dongfang Fortune Network verwendet die GB2312-Codierungssuppe 
    = BeautifulSoup (html, 'html.parser') 
    a = oup.find_all ('a') [: 200] # Das Aktiensymbol befindet sich im href-Attribut im a-Tag. Wir nehmen nur die ersten 100 a-Tags 
    für i in a: 
        try: 
            href = i.attrs ['href']  
            lst.append (re.findall (r "\ d {6}",
        außer: 
            continue

 
def getStockInfo (lst, stockURL, fpath): 
    count = 0 
    für Lager in lst: 
        url = stockURL + Lager # Link zu Informationen zu jedem Lager 
        html = getHTMLText (url) 
        try: 
            if html == "": 
                continue 
            infoDict = {} # Alle Bestandsinformationen werden im Wörterbuch 
            suppe = BeautifulSoup (html, 'html.parser') 
            gespeichert. StockInfo =oup.find ('div', attrs = ('class': 'stock-info'}) 
            name = stockInfo.find_all (attrs = {'class': 'stock-name'}) [0] 
            infoDict.update ({'stock name': name.text.split () [0]}) # .text kann Tags entfernen Die Zeichenfolge in 
            keyList = stockInfo.find_all ('dt') [:4] # Nehmen Sie nur die ersten 4 Informationen des Bestands
            valueList = stockInfo.find_all ('dd') [: 4] 
            count = count + 1
            für i im Bereich (len (keyList)): 
                key = keyList [i] .text 
                val = valueList [i] .text 
                infoDict [key] = val 
            mit open (fpath, 'a', encoding = 'utf-8') als f: 
                f.write (str (infoDict) + '\ n') 
                count = count + 1 
                print ("\ rcurrent progress: {: .2f}%". format (count * 100 / len (lst)), end = "") # \ r bedeutet, zum Anfang der aktuellen Zeile zurückzukehren. Der gedruckte Inhalt überschreibt den vorherigen gedruckten Inhalt. 
                                                                                     # Nach jedem Druck wird er automatisch umbrochen. end wird verwendet, um den Zeilenumbruch abzubrechen. 
        außer:
            PRINT ( "\ r aktuellen Fortschritt: {:} .2f%" "" das Format (Count * 100 / len (LST)), End =) 
            Weiter 


DEF main (): 
    stock_list_url = ‚HTTPS: //quote.eastmoney. com / stock_list.html '# Code jeder Aktie dongfangcaifuwang erhalten 
    stock_info_url =' https://www.laohu8.com/stock/ '# Informationen von jedem Ort erhalten Gemeinschaft stock Tiger 
    output_file =' / Users / wangpeng / Desktop / BaiduStockInfo.txt ' 
    slist = [] 
    getStockList (slist, stock_list_url) 
    getStockInfo (slist, stock_info_url, output_file) 


main ()

Datei-Ergebnisse:

 

Ich denke du magst

Origin www.cnblogs.com/picassooo/p/12670835.html
Empfohlen
Rangfolge