Python Web-Crawler und Informationsextraktion (Beispiele on)

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. Hier hat Bild einfügen Beschreibung
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 Hier hat Bild einfügen Beschreibung
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 Hier hat Bild einfügen Beschreibung
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 Hier hat Bild einfügen Beschreibung
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)

Hier hat Bild einfügen Beschreibung
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. Hier hat Bild einfügen Beschreibung
  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

Veröffentlicht sieben Originalartikel · erntete Lob 1 · Ansichten 3558

Ich denke du magst

Origin blog.csdn.net/haoxun12/article/details/104954881
Empfohlen
Rangfolge