Nach kleinen für alle zu einem Web - Crawler Python bringen und Informationsextraktion (Beispiele zu erklären). Xiao Bian fühle mich sehr gut, jetzt für jedermann zu teilen, sondern auch eine Referenz sein. Kommen Sie und sehen, folgen Sie zusammen Xiaobian
Kurs Architektur:
1, Anfragen Rahmen: automatische Crawling-Seiten und HTML-Anfrage an das Netzwerk übermittelt automatisch
2, robots.txt: Web-Crawler Ausschlusskriterien
3, BeautifulSoup Rahmen: Parsing HTML-Seite
4, Re Rahmen: Regelmäßige Rahmen, Extrakt Schlüsselinformationen Seite
5, Scrapy Rahmen: Web-Crawler-Prinzip eingeführt professionelle Reptil Rahmen eingeführt
理念: Die Website ist die API ...
Python-Sprache häufig IDE-Tools verwendet
Text Tools IDE:
IDLE, Notepad ++, Sublime Text, Vim & Emacs, Atom, Komodo Edit
Integration Tools IDE:
PyCharm, Flügel, PyDev & Eclipse Visual Studio, Anaconda & Spyder, Canopy
· IDLE ist ein gemeinsamer Einstieg Authoring-Tools, die mit Standard-Python kommen, die auf zwei Arten eine interaktive Datei enthält. Geeignet für kürzere Programme.
· Sublime Text ist für Drittanbieter-Programmierer entwickelt, um spezifische Programmiertools zu entwickeln, die Erfahrung mit einer Vielzahl verbessern können Programmierstile zu programmieren.
· Wing ist Wingware von der Firma Gebühren IDE zur Verfügung gestellt, die Debuggen feature-rich, mit Versionskontrolle, Synchronisation Version, geeignet für Menschen zu entwickeln. Geeignet für große Programme zu schreiben.
· Visual Studio ist die Wartung von Microsoft, können Sie Python configure PTVs schreiben, vor allem Windows-basierte Umgebung, reich Debugging-Funktionen.
· Eclipse ist ein Open-Source-IDE-Entwicklungs-Tools, können durch Konfiguration PyDev in Python geschrieben werden, aber der Konfigurationsprozess ist komplex und erfordert ein gewisses Maß an Entwicklungserfahrung.
· PyCharm in Community Edition und Professional Edition, Community Edition frei, einfach, hochintegrierte, geeignet für die Herstellung von komplexeren Projekten.
Geeignet für Scientific Computing, IDE Datenanalyse:
· Canopy von der Gesellschaft gehalten wird, lädt Enthought Werkzeug, dass Stützen fast 500 Bibliotheken von Drittanbietern, Anwendungsentwicklung für die wissenschaftliche Rechnen.
· Anaconda ist eine kostenlose Open-Source, unterstützt fast 800 Bibliotheken von Drittanbietern.
Anfragen Erste Bibliothek
Anfragen Installation:
Anfragen Bibliothek wird jetzt als die beste Web-Crawling-Python Bibliotheken von Drittanbietern, einfach, einfache Funktionen erkannt.
Offizielle Webseite: http: //www.python-requests.org
Finden "cmd.exe", als Administrator ausführen, geben Sie in der Befehlszeile: "\ Windows \ System32 C" : "pip installieren Anfragen" zu laufen.
Verwendung IDLE Testanforderungen Library:
>>> import requests
>>> r = requests.get("http://www.baidu.com")#抓取百度页面
>>> r.status_code
>>> r.encoding = 'utf-8'
>>> r.text
Anfragen Bibliothek 7 primäre Methode
get (Methode)
r = requests.get (url)
Methode get () eine Ressourcenanforderung Request-Objekt mit dem Server aufzubauen, gibt der Server eine Antwort-Objekt die Ressource umfasst.
requests.get (url, params = None, ** kwargs)
URL: URL beabsichtigt Links zu Seiten zu bekommen
params: zusätzliche Parameter in der URL, Wörterbuch oder Byte-Stream-Format, optional
** kwargs: 12 Zugangssteuerparameter
Zwei wichtige Objekte Anfragen Bibliothek
· Anfrage
· Reaktion: Response-Objekt den Inhalt der Reptilien Rückkehr enthalten
Antwort Objektattribute
r.status_code: HTTP-Anforderung gibt einen Status 200 erfolgreiche Verbindung anzeigt, repräsentiert 404 einen Fehler
R.TEXT: HTTP Antwortstring Inhalt, das heißt, URL entsprechenden Seiteninhalt
r.encoding: Codieren der entsprechenden Inhalte aus dem HTTP-Header des Schätzens
r.apparent_encoding: Codieren den entsprechenden Inhalt von der Inhaltsanalyse (alternative Codierung)
r.content: Binäre Form eines HTTP-Antwortinhalt
r.encoding: Wenn charset Header nicht existiert, Codierung als ISO-8859-1 angesehen wird.
r.apparent_encoding: Analysieren der Inhalt der Seite kann als alternative kodierend r.encoding betrachtet werden.
Antwortcode:
r.encoding: Vermutung aus dem HTTP-Header in der Antwort Inhaltscodierung, wenn charset Header nicht existiert, Codierung als ISO-8859-1 betrachtet wird, R.TEXT auf Anzeige von Webinhalten nach r.encoding
r.apparent_encoding: analysiert basierend auf den Inhalten der Seite-Codierung kann als Alternative zu sehen r.encoding
Durchforsteten Seiten generischer Code Rahmen
Abnormal Anfragen Bibliothek
Antwort Ausnahme
r.raise_for_status (): Wenn nicht 200, eine requests.HTTPError Anomalie;
Bei dem Verfahren, um das Innere r.status_code Bestimmung ist gleich 200, wenn keine zusätzliche Erklärung, die die Verwendung von Ausnahmebehandlung erleichtert try-except
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() # 如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__ == "__main__":
url = "http://www.baidu.com"
print(getHTMLText(url))
Common Code Rahmen, ermöglicht es dem Benutzer Crawls Web wird effizienter, stabil und zuverlässig.
HTTP-Protokoll
HTTP, Hypertext Transfer Protocol, Hypertext Transfer Protocol.
HTTP wird auf eine „Anfrage und Antwort“ -Modus, zustandslose Anwendungsschicht-Protokoll basiert.
HTTP-Protokoll verwendet die URL als Identifikation von Netzwerkressourcen finden.
URL-Format: http: // host [: port] [Pfad]
· Host: Rechts Internet - Host - Domain - Namen oder die IP - Adresse
· Port: Portnummer, ist die Standard - Portnummer 80
· Pfad: der Pfad der angeforderten Ressource
HTTP-URL zu verstehen:
URL ist ein Internetzugang Pfad-Ressourcen über das HTTP-Protokoll, eine URL zu einer Datenquelle entspricht.
HTTP - Protokoll auf den Ressourcen
zwischen PATCH der Differenz zu verstehen und PUT
Angenommen, eine Reihe von Daten Location URL Userinfo, einschließlich UserID, Usernamen, 20 Felder.
Nachfrage: der Benutzer den Benutzernamen zu ändern, die andere unverändert.
* Die Verwendung von PATCH, Username nur teilweise Aktualisierungsanforderung an die URL eingereicht.
* Verwenden Sie PUT, alle 20 Felder müssen an die URL eingereicht werden, wird nicht gebundenes Feld entfernt.
Der Hauptvorteil des PATCH: save Netzwerkbandbreite
Fordert Bibliothek Haupt-Analyseverfahren
requests.request (Methode, url, ** kwargs)
· Methode: Modus-Anforderung, die entsprechenden get / put / Post 7 Arten
例: r = requests.request ( 'OPTIONEN', url, ** kwargs)
· URL: URL beabsichtigt Links zu Seiten zu bekommen
· ** kwargs: Zugriffskontrolle Parameter, insgesamt 13, sind optional
params: Wörterbuch oder eine Folge von Bytes an die URL als Parameter hinzugefügt;
kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('GET', 'http://python123.io/ws',params=kv)
print(r.url)
'''
http://python123.io/ws?key1=value1&key2=value2
'''
Daten: Wörterbuch, eine Sequenz von Bytes oder ein Dateiobjekt, wie der Inhalt der Anfrage;
json: JSON-formatierte Daten, wie der Inhalt der Anforderung;
headers: Wörterbuch, HTTP benutzerdefinierte Header;
hd = {'user-agent':'Chrome/10'}
r = requests.request('POST','http://www.yanlei.shop',headers=hd)
Cookies: ein Wörterbuch oder CookieJar, Antrag des Cookies;
auth: Tupeln, Unterstützung HTTP Authentifizierung;
Dateien: ein Wörterbuch, Dateitransfer;
fs = {'file':open('data.xls', 'rb')}
r = requests.request('POST','http://python123.io/ws',files=fs)
Die Timeout-Zeit, in Sekunden festgelegt;: timeout
Proxies: ein Wörterbuch, das den Zugriff Proxy-Server, können Sie die Login-Authentifizierung erhöhen
allow_redirects: Richtig / Falsch, die Standardeinstellung ist wahr, die Umleitungsschalter;
Strom: True / False, der Standardwert ist wahr, sofortiger Zugriff auf Content-Downloads wechseln;
überprüfen: Richtig / Falsch, die Standardeinstellung ist Wahr, SSL-Zertifikat-Authentifizierung Schalter;
cert: Local SSL-Zertifikat-Pfad
#方法及参数
requests.get(url, params=None, **kwargs)
requests.head(url, **kwargs)
requests.post(url, data=None, json=None, **kwargs)
requests.put(url, data=None, **kwargs)
requests.patch(url, data=None, **kwargs)
requests.delete(url, **kwargs)
Web-Crawler verursacht Probleme
Leistung Belästigung:
Begrenzt auf die Höhe und Zweck des Schreibens werden die Web-Crawler ein riesiger Ressource Kopf Web-Server sein
Rechtsrisiko:
Daten auf dem Server haben Eigentum, nachdem Daten für Profit Web-Crawler zu erhalten wird rechtliche Risiken bringen.
Verlust der Privatsphäre:
Web-Crawler kann die Fähigkeit hat, eine einfache Zugangskontrolle zu durchbrechen, den Zugriff auf die geschützten Daten, so dass die Offenlegung der persönlichen Privatsphäre.
Web-Crawler Limit
· Quelle der Bewertung: User-Agent bestimmen Einschränkungen
Inspektionsbesuch HTTP-Protokoll-Header User-Agent-Feld, wird der Wert als Antwort einen Browser oder Crawler freundlich zuzugreifen.
· Ankündigung: Roots Vereinbarung
Alles in alle Website Reptilien Taktik kriecht, Reptilien mit den Anforderungen entsprechen.
Robots Vereinbarung
Robots Exclusion Standard Ausschlusskriterien Crawlern
Rolle: Webseite Web-Crawler zu informieren, welche Seiten gecrawlt werden können und was nicht.
Form: robots.txt-Datei im Stammverzeichnis der Website.
Gehäuse: Jingdong Robots Vereinbarung
http://www.jd.com/robots.txt
# 注释:*代表所有,/代表根目录
User-agent: *
Disallow: /?*
Disallow: /pop/*.html
Disallow: /pinpai/*.html?*
User-agent: EtaoSpider
Disallow: /
User-agent: HuihuiSpider
Disallow: /
User-agent: GwdangSpider
Disallow: /
User-agent: WochachaSpider
Disallow: /
Verwenden Robots Vereinbarung
Crawler: automatischer oder manueller Identifikation robots.txt, dann wird der Inhalt von kriechenden.
Bindung: Robots - Protokoll wird empfohlen , ist aber nicht bindend, können die Web - Crawler nicht folgen, aber es gibt rechtliche Risiken.
Fordert Bibliothek Web-Crawler-Kampf
1, Jingdong Ware
import requests
url = "https://item.jd.com/5145492.html"
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
2, Amazon Waren
# 直接爬取亚马逊商品是会被拒绝访问,所以需要添加'user-agent'字段
import requests
url = "https://www.amazon.cn/gp/product/B01M8L5Z3Y"
try:
kv = {'user-agent':'Mozilla/5.0'} # 使用代理访问
r = requests.get(url, headers = kv)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(t.text[1000:2000])
except:
print("爬取失败"
3, Baidu / 360 Suchbegriffen eingereicht
Suchmaschine Keyword-Schnittstelle einreichen
· Baidu keywords Schnittstellen:
http://www.baidu.com/s?wd=keyword
· 360-Schnittstellen Stichwort:
http://www.so.com/s?q=keyword
# 百度
import requests
keyword = "Python"
try:
kv = {'wd':keyword}
r = requests.get("http://www.baidu.com/s",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")
# 360
import requests
keyword = "Python"
try:
kv = {'q':keyword}
r = requests.get("http://www.so.com/s",params=kv)
print(r.request.url)
r.raise_for_status()
print(len(r.text))
except:
print("爬取失败")
4, wobei das Netzwerk Bild der kriechenden und Speicher
Netzwerk-Image-Link-Format:
http://www.example.com/picture.jpg
National Geographic:
http://www.nationalgeographic.com.cn/
Wählen Sie ein Bild Link:
http://image.nationalgeographic.com.cn/2017/0704/20170704030835566.jpg
图片爬取全代码
import requests
import os
url = "http://image.nationalgeographic.com.cn/2017/0704/20170704030835566.jpg"
root = "D://pics//"
path = root + url.split('/')[-1]
try:
if not os.path.exists(root):
os.mkdir(root)
if not os.path.exists(path):
r = requests.get(url)
with open(path,'wb') as f:
f.write(r.content)
f.close()
print("文件保存成功")
else:
print("文件已存在")
except:
print("爬取失败")
5, IP-Adresse Zuordnung der automatischen Abfrage
www.ip138.com IP-Anfrage
http://ip138.com/ips138.asp?ip=ipaddress
http://m.ip138.com/ip.asp?ip=ipaddress
import requests
url = "http://m.ip138.com/ip.asp?ip="
ip = "220.204.80.112"
try:
r = requests.get(url + ip)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[1900:])
except:
print("爬取失败")
# 使用IDLE
>>> import requests
>>> url ="http://m.ip138.com/ip.asp?ip="
>>> ip = "220.204.80.112"
>>> r = requests.get(url + ip)
>>> r.status_code
>>> r.text
Schließlich habe ich eine guten Ruf Python Versammlung empfehlen [ click to enter ], es gibt eine Menge von Oldtimern Lernfähigkeiten ist, Lernerfahrung, Interview Fähigkeiten, Erfahrungen am Arbeitsplatz und anderen Anteils, desto mehr werden wir sorgfältig die nullbasierten einleitenden Informationen über die aktuellen Projektdaten bereit jeden Tag Python - Programmierer erklären den Zeitpunkt der Technik, einige Lernmethoden und die Notwendigkeit, achten Sie auf kleine Details zu teilen ,
als diese Python Web - Crawler und Informationsextraktion (Beispiele zu erläutern) Kleinserien wird der gesamte Inhalt aller der teilen