suchen
HeimBackend-EntwicklungPython-TutorialVollständige Aufzeichnung des Schreibens von Python-Crawlern von Scratch_Python

Die ersten neun Artikel wurden von den Grundlagen bis zum Schreiben ausführlich vorgestellt. Im zehnten Artikel geht es darum, Schritt für Schritt ein Crawler-Programm zu schreiben. Bitte lesen Sie ihn sorgfältig 🎜>

Lassen Sie uns zunächst über die Website unserer Schule sprechen:

http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html

Ergebnisse überprüfen Sie müssen sich anmelden in, und dann werden die Ergebnisse jedes Fachs angezeigt, aber nur die Ergebnisse werden ohne die Notenpunkte angezeigt, die der gewichteten Durchschnittspunktzahl entsprechen.

Notenpunkte manuell zu berechnen ist natürlich eine sehr mühsame Sache. Wir können also Python verwenden, um einen Crawler zu erstellen, der dieses Problem löst.

1. Der Vorabend der entscheidenden Schlacht

Lassen Sie uns zuerst ein Tool vorbereiten: das HttpFox-Plug-in.

Dies ist ein HTTP-Protokollanalyse-Plug-in, das die Zeit und den Inhalt von Seitenanfragen und -antworten sowie das vom Browser verwendete COOKIE analysiert.


Nehmen Sie mich als Beispiel, installieren Sie es einfach auf Firefox. Der Effekt ist wie folgt:

Sie können die entsprechenden Informationen sehr intuitiv anzeigen.

Klicken Sie auf „Start“, um die Erkennung zu starten, auf „Stopp“, um die Erkennung anzuhalten, und auf „Löschen“, um den Inhalt zu löschen.

Im Allgemeinen klicken Sie vor der Verwendung auf Stopp, um anzuhalten, und klicken Sie dann auf Löschen, um den Bildschirm zu löschen und sicherzustellen, dass Sie die durch den Zugriff auf die aktuelle Seite erhaltenen Daten sehen.


2. Gehen Sie tief hinter die feindlichen Linien

Gehen wir zur Punkteabfrage-Website der Shandong-Universität, um zu sehen, was beim Einloggen gesendet wurde. Information.

Gehen Sie zunächst zur Anmeldeseite und öffnen Sie httpfox. Klicken Sie nach dem Löschen auf Start, um die Erkennung zu aktivieren:

Stellen Sie nach Eingabe der persönlichen Daten sicher, dass httpfox aktiviert ist Klicken Sie dann auf OK, um die Informationen zu übermitteln und sich anzumelden.

Zu diesem Zeitpunkt können Sie sehen, dass httpfox drei Informationen erkannt hat:

Klicken Sie zu diesem Zeitpunkt auf die Stopp-Schaltfläche, um sicherzustellen, dass das, was ist Erfasst werden die Rückmeldungen nach dem Besuch der Seite, damit wir die Anmeldung beim Crawlen simulieren können.

3. Hu Ding Jie Niu

Auf den ersten Blick haben wir drei Daten, zwei sind GET und eine ist POST, aber was genau sind sie? Wir wissen es immer noch nicht.

Wir müssen uns also die erfassten Inhalte einzeln ansehen.

Sehen Sie sich zuerst die POST-Informationen an:


Da es sich um POST-Informationen handelt, können wir uns einfach PostData ansehen.

Sie können sehen, dass es zwei POST-Daten gibt, studid und pwd.

Und aus dem Redirect to of Type geht hervor, dass nach Abschluss des POST zur Seite bks_login2.loginmessage gesprungen wird.

Es ist ersichtlich, dass es sich bei diesen Daten um die Formulardaten handelt, die nach dem Klicken auf „OK“ übermittelt wurden.

Klicken Sie auf das Cookie-Label, um die Cookie-Informationen anzuzeigen:


Ja, ich habe ein KONTO-Cookie erhalten und es wird nach dem automatisch gelöscht Sitzung endet.

Welche Informationen haben Sie nach dem Absenden erhalten?

Werfen wir einen Blick auf die nächsten beiden GET-Daten.

Schauen wir uns zuerst den ersten an. Wir klicken auf das Inhalts-Tag, um den empfangenen Inhalt anzuzeigen. Haben Sie Lust, ihn lebendig zu essen? -Der HTML-Quellcode ist zweifellos offengelegt:


Es scheint, dass dies nur der HTML-Quellcode der Anzeigeseite ist. Klicken Sie auf das Cookie, um das Cookie anzuzeigen -bezogene Informationen:



Aha, es stellt sich heraus, dass der Inhalt der HTML-Seite erst nach den Cookie-Informationen empfangen wurde gesendet.

Schauen wir uns die zuletzt empfangene Nachricht an:

Nach einem groben Blick sollte es sich lediglich um eine CSS-Datei namens style.css handeln, was der Fall ist Das bedeutet für uns keine große Wirkung.

4. Ruhig antworten

Da wir nun wissen, welche Daten wir an den Server gesendet und welche Daten wir empfangen haben, ist der grundlegende Vorgang wie folgt:

Zuerst posten wir die Studenten-ID und das Passwort---> geben dann den Cookie-Wert zurück und senden dann das Cookie an den Server---> Rufen Sie die Daten von der Notenseite ab, verwenden Sie reguläre Ausdrücke, um die Noten und Credits separat zu extrahieren und den gewichteten Durchschnitt zu berechnen.


Okay, es sieht aus wie ein ganz einfaches Beispielpapier. Dann lass es uns ausprobieren.

Aber vor dem Experiment gibt es noch ein ungelöstes Problem: Wo werden die POST-Daten gesendet?

Schauen Sie sich noch einmal die Originalseite an:

Offensichtlich wird es mithilfe eines HTML-Frameworks implementiert, das heißt, die Adresse, die wir in der Adressleiste sehen, ist nicht die Adresse zum Absenden des Formulars auf der rechten Seite.

Wie bekomme ich also die echte Adresse? -Klicken Sie mit der rechten Maustaste, um den Quellcode der Seite anzuzeigen:

Ja, das stimmt, die Seite mit dem Namen „w_right“ ist die Anmeldeseite, die wir wollen.

Die ursprüngliche Adresse der Website lautet:

http://jwxt.sdu.edu.cn:7777/zhxt_bks/zhxt_bks.html

Also die wahre Form Einreichung Die Adresse sollte lauten:

http://jwxt.sdu.edu.cn:7777/zhxt_bks/xk_login.html

Nach der Eingabe stellt sich heraus, dass es wie erwartet ist:


Verdammt, es ist das Kursauswahlsystem der Tsinghua-Universität. . . Ich vermute, dass unsere Schule zu faul war, eine Seite zu erstellen, also haben wir sie uns einfach ausgeliehen. . Infolgedessen wurde der Titel nicht einmal geändert. . .

Aber diese Seite ist immer noch nicht die Seite, die wir brauchen, denn die Seite, an die unsere POST-Daten übermittelt werden, sollte die Seite sein, die in der AKTION des Formulars übermittelt wird.

Mit anderen Worten, wir müssen den Quellcode überprüfen, um zu wissen, wohin die POST-Daten gesendet werden:


Nun, optisch ist das das POST-Übermittlung Die Adresse der Daten.

Ordnen Sie es in der Adressleiste ein. Die vollständige Adresse sollte wie folgt lauten:

http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bks_login2.login

(Der Weg, es zu erhalten, ist sehr einfach. Klicken Sie direkt im Firefox-Browser auf den Link, um die Adresse des Links anzuzeigen.)

5. Probieren Sie es aus im Kleinen

Die nächste Aufgabe besteht darin, mit Python das Senden von POST-Daten zu simulieren und den zurückgegebenen Cookie-Wert abzurufen.

Für die Funktionsweise von Cookies können Sie diesen Blogbeitrag lesen:

http://www.jb51.net/article/57144.htm

Wir bereiten zunächst eine vor POST-Daten, bereiten Sie ein Cookie für den Empfang vor und schreiben Sie dann den Quellcode wie folgt:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:山东大学爬虫
#   版本:0.1
#   作者:why
#   日期:2013-07-12
#   语言:Python 2.7
#   操作:输入学号和密码
#   功能:输出成绩的加权平均值也就是绩点
#---------------------------------------
import urllib  
import urllib2
import cookielib
cookie = cookielib.CookieJar()  
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#需要POST的数据#
postdata=urllib.urlencode({  
    'stuid':'201100300428',  
    'pwd':'921030'  
})
#自定义一个请求#
req = urllib2.Request(  
    url = 'http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bks_login2.login',  
    data = postdata
)
#访问该链接#
result = opener.open(req)
#打印返回的内容#
print result.read()

Sehen Sie sich anschließend die Auswirkung des Vorgangs an:


ok, auf diese Weise haben wir die Anmeldung erfolgreich simuliert.

6. Eine Sache durch eine andere ersetzen

Die nächste Aufgabe besteht darin, einen Crawler zu verwenden, um die Ergebnisse der Schüler zu ermitteln.

Schauen wir uns noch einmal die Quellwebsite an.

Nachdem Sie HTTPFOX aktiviert haben, klicken Sie, um die Ergebnisse anzuzeigen und festzustellen, dass die folgenden Daten erfasst wurden:


Klicken Sie auf die ersten GET-Daten um den Inhalt anzuzeigen. Es wird festgestellt, dass der Inhalt der Inhalt der erhaltenen Punktzahl ist.

Für den erhaltenen Seitenlink klicken Sie mit der rechten Maustaste, um das Element aus dem Quellcode der Seite anzuzeigen. Sie können die Seite sehen, die nach dem Klicken auf den Link springt (in Firefox müssen Sie nur mit der rechten Maustaste klicken und „ Diesen Frame anzeigen". ):


Sie können den Link zum Anzeigen der Ergebnisse wie folgt erhalten:

http://jwxt .sdu.edu.cn: 7777/pls/wwwbks/bkscjcx.curscopre

7. Alles ist bereit

Jetzt ist alles bereit, also bewerben Sie sich einfach Klicken Sie auf den Link zum Crawler und prüfen Sie, ob Sie die Ergebnisseite anzeigen können.

Wie Sie bei httpfox sehen können, müssen wir ein Cookie senden, um die Punkteinformationen zurückzugeben. Daher verwenden wir Python, um das Senden eines Cookies zum Anfordern der Punkteinformationen zu simulieren:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:山东大学爬虫
#   版本:0.1
#   作者:why
#   日期:2013-07-12
#   语言:Python 2.7
#   操作:输入学号和密码
#   功能:输出成绩的加权平均值也就是绩点
#---------------------------------------
import urllib  
import urllib2
import cookielib
#初始化一个CookieJar来处理Cookie的信息#
cookie = cookielib.CookieJar()
#创建一个新的opener来使用我们的CookieJar#
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
#需要POST的数据#
postdata=urllib.urlencode({  
    'stuid':'201100300428',  
    'pwd':'921030'  
})
#自定义一个请求#
req = urllib2.Request(  
    url = 'http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bks_login2.login',  
    data = postdata
)
#访问该链接#
result = opener.open(req)
#打印返回的内容#
print result.read()
#打印cookie的值
for item in cookie:  
    print 'Cookie:Name = '+item.name  
    print 'Cookie:Value = '+item.value
    
#访问该链接#
result = opener.open('http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bkscjcx.curscopre')
#打印返回的内容#
print result.read()

Drücken Sie F5, um die erfassten Daten auszuführen und anzusehen:


Da es auf diese Weise kein Problem gibt, verwenden Sie reguläre Ausdrücke, um die Daten leicht zu konvertieren Verarbeiten Sie es und nehmen Sie die Credits und die entsprechenden Punkte heraus.

8. So viel HTML-Quellcode ist für unsere Verarbeitung offensichtlich nicht förderlich Extrahieren Sie die erforderlichen Daten.
Tutorials zu regulären Ausdrücken finden Sie in diesem Blog-Beitrag:

http://www.jb51.net/article/57150.htm

Lass uns einen nehmen Schauen Sie sich die Ergebnisse an. Der Quellcode:

In diesem Fall ist die Verwendung regulärer Ausdrücke einfach.
Wir werden den Code ein wenig aufräumen und dann reguläre Ausdrücke verwenden, um die Daten zu extrahieren:

Die Ebene ist begrenzt und reguläre Ausdrücke sind etwas hässlich. Der Laufeffekt ist wie in der Abbildung dargestellt:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:山东大学爬虫
#   版本:0.1
#   作者:why
#   日期:2013-07-12
#   语言:Python 2.7
#   操作:输入学号和密码
#   功能:输出成绩的加权平均值也就是绩点
#---------------------------------------
import urllib  
import urllib2
import cookielib
import re
class SDU_Spider:  
    # 申明相关的属性  
    def __init__(self):    
        self.loginUrl = 'http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bks_login2.login'   # 登录的url
        self.resultUrl = 'http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bkscjcx.curscopre' # 显示成绩的url
        self.cookieJar = cookielib.CookieJar()                                      # 初始化一个CookieJar来处理Cookie的信息
        self.postdata=urllib.urlencode({'stuid':'201100300428','pwd':'921030'})     # POST的数据
        self.weights = []   #存储权重,也就是学分
        self.points = []    #存储分数,也就是成绩
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookieJar))
    def sdu_init(self):
        # 初始化链接并且获取cookie
        myRequest = urllib2.Request(url = self.loginUrl,data = self.postdata)   # 自定义一个请求
        result = self.opener.open(myRequest)            # 访问登录页面,获取到必须的cookie的值
        result = self.opener.open(self.resultUrl)       # 访问成绩页面,获得成绩的数据
        # 打印返回的内容
        # print result.read()
        self.deal_data(result.read().decode('gbk'))
        self.print_data(self.weights);
        self.print_data(self.points);
    # 将内容从页面代码中抠出来  
    def deal_data(self,myPage):  
        myItems = re.findall(&#39;<TR>.*?<p.*?<p.*?<p.*?<p.*?<p.*?>(.*?)</p>.*?<p.*?<p.*?>(.*?)</p>.*?</TR>&#39;,myPage,re.S)     #获取到学分
        for item in myItems:
            self.weights.append(item[0].encode(&#39;gbk&#39;))
            self.points.append(item[1].encode(&#39;gbk&#39;))
            
    # 将内容从页面代码中抠出来
    def print_data(self,items):  
        for item in items:  
            print item
#调用  
mySpider = SDU_Spider()  
mySpider.sdu_init()

OK, als nächstes kommt nur noch das Datenverarbeitungsproblem. .

9. Rückkehr im Triumph

Der vollständige Code lautet wie folgt.

Verwandte Empfehlungen:

# -*- coding: utf-8 -*-
#---------------------------------------
#   程序:山东大学爬虫
#   版本:0.1
#   作者:why
#   日期:2013-07-12
#   语言:Python 2.7
#   操作:输入学号和密码
#   功能:输出成绩的加权平均值也就是绩点
#---------------------------------------
import urllib  
import urllib2
import cookielib
import re
import string
class SDU_Spider:  
    # 申明相关的属性  
    def __init__(self):    
        self.loginUrl = &#39;http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bks_login2.login&#39;   # 登录的url
        self.resultUrl = &#39;http://jwxt.sdu.edu.cn:7777/pls/wwwbks/bkscjcx.curscopre&#39; # 显示成绩的url
        self.cookieJar = cookielib.CookieJar()                                      # 初始化一个CookieJar来处理Cookie的信息
        self.postdata=urllib.urlencode({&#39;stuid&#39;:&#39;201100300428&#39;,&#39;pwd&#39;:&#39;921030&#39;})     # POST的数据
        self.weights = []   #存储权重,也就是学分
        self.points = []    #存储分数,也就是成绩
        self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookieJar))
    def sdu_init(self):
        # 初始化链接并且获取cookie
        myRequest = urllib2.Request(url = self.loginUrl,data = self.postdata)   # 自定义一个请求
        result = self.opener.open(myRequest)            # 访问登录页面,获取到必须的cookie的值
        result = self.opener.open(self.resultUrl)       # 访问成绩页面,获得成绩的数据
        # 打印返回的内容
        # print result.read()
        self.deal_data(result.read().decode(&#39;gbk&#39;))
        self.calculate_date();
    # 将内容从页面代码中抠出来  
    def deal_data(self,myPage):  
        myItems = re.findall(&#39;<TR>.*?<p.*?<p.*?<p.*?<p.*?<p.*?>(.*?)</p>.*?<p.*?<p.*?>(.*?)</p>.*?</TR>&#39;,myPage,re.S)     #获取到学分
        for item in myItems:
            self.weights.append(item[0].encode(&#39;gbk&#39;))
            self.points.append(item[1].encode(&#39;gbk&#39;))
    #计算绩点,如果成绩还没出来,或者成绩是优秀良好,就不运算该成绩
    def calculate_date(self):
        point = 0.0
        weight = 0.0
        for i in range(len(self.points)):
            if(self.points[i].isdigit()):
                point += string.atof(self.points[i])*string.atof(self.weights[i])
                weight += string.atof(self.weights[i])
        print point/weight
#调用  
mySpider = SDU_Spider()  
mySpider.sdu_init()

So verwenden Sie den Python-Crawler, um diese wertvollen Blogbeiträge zu erhalten

Beispiel für das Teilen von Dynamischer Python-Crawler

Das obige ist der detaillierte Inhalt vonVollständige Aufzeichnung des Schreibens von Python-Crawlern von Scratch_Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Python: Automatisierung, Skript- und AufgabenverwaltungPython: Automatisierung, Skript- und AufgabenverwaltungApr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

Python und Zeit: Machen Sie das Beste aus Ihrer StudienzeitPython und Zeit: Machen Sie das Beste aus Ihrer StudienzeitApr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python: Spiele, GUIs und mehrPython: Spiele, GUIs und mehrApr 13, 2025 am 12:14 AM

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Python vs. C: Anwendungen und Anwendungsfälle verglichenPython vs. C: Anwendungen und Anwendungsfälle verglichenApr 12, 2025 am 12:01 AM

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Der 2-stündige Python-Plan: ein realistischer AnsatzDer 2-stündige Python-Plan: ein realistischer AnsatzApr 11, 2025 am 12:04 AM

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python: Erforschen der primären AnwendungenPython: Erforschen der primären AnwendungenApr 10, 2025 am 09:41 AM

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Wie viel Python können Sie in 2 Stunden lernen?Wie viel Python können Sie in 2 Stunden lernen?Apr 09, 2025 pm 04:33 PM

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer-Anfänger-Programmierbasis in Projekt- und problemorientierten Methoden?Apr 02, 2025 am 07:18 AM

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools