Grundlagen der Verwendung der Bibliothek urllib.request

巴扎黑
Freigeben: 2017-07-18 13:50:49
Original
2987 Leute haben es durchsucht

Beim sogenannten Webseiten-Crawling werden die in der URL-Adresse angegebenen Netzwerkressourcen aus dem Netzwerk-Stream gelesen und lokal gespeichert. Es gibt viele Bibliotheken in Python, die zum Crawlen von Webseiten verwendet werden können. Lassen Sie uns zunächst urllib.request lernen. (urllib2 in python2.x)

urlopen

Wir lesen zuerst den folgenden Code: Öffnen Sie die Baidu-Homepage auf Ihrem Computer, klicken Sie mit der rechten Maustaste und wählen Sie „Quellcode anzeigen“. Das Ausgabeergebnis ist genau das gleiche wie bei der Ausführung des obigen Programms. Mit anderen Worten: Die oben genannten Codezeilen haben uns dabei geholfen, den gesamten Code der Baidu-Homepage zu durchsuchen.

Reuqest
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# 向指定的url发送请求,并返回服务器响应的类文件对象
response = urllib.request.urlopen("http://www.baidu.com/")

# 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串
html = response.read()

# 打印字符串
print(html)
Nach dem Login kopieren
Im obigen Beispiel ist der Parameter von urlopen() eine URL-Adresse.

Wenn Sie jedoch komplexere Vorgänge ausführen müssen, z. B. das Hinzufügen von HTTP-Headern, müssen Sie eine Request-Instanz als Parameter von urlopen() und die URL-Adresse, auf die zugegriffen werden muss, als Parameter von erstellen Instanz anfordern.

Die Ausführungsergebnisse sind genau die gleichen:

Zusätzlich zum URL-Parameter kann die neu erstellte Request-Instanz auch zwei weitere Parameter festlegen:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# url 作为Request()方法的参数,构造并返回一个Request对象
request = urllib.request.Request("http://www.baidu.com/")

# 向服务器发送这个请求
response = urllib.request.urlopen(request)

html = response.read()

print(html)
Nach dem Login kopieren
1.data (standardmäßig leer): Es handelt sich um die mit der URL übermittelten Daten (z. B. Post-Daten), und die HTTP-Anfrage wird von „GET“ in „POST“ geändert.

2.headers (standardmäßig leer): ist ein Wörterbuch, das Schlüssel-Wert-Paare von HTTP-Headern enthält, die gesendet werden müssen.

User-Agent

Wenn wir möchten, dass unser Crawler-Programm eher einem echten Benutzer ähnelt, dann besteht unser erster Schritt darin, so zu tun, als ob wir ein erkannter Browser wären. Verschiedene Browser verfügen beim Senden von Anfragen über unterschiedliche User-Agent-Header. Der standardmäßige User-Agent-Header von urllib.request lautet: Python-urllib/x.y (x und y sind die Haupt- und Nebenversionsnummern von Python, z. B. Python-urllib/3.5)

Weitere Header-Informationen hinzufügen

Fügen Sie der HTTP-Anfrage bestimmte Header hinzu, um eine vollständige HTTP-Anfragenachricht zu erstellen.
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'

# 导入urllib.request库
import urllib.request

# chrome 的 User-Agent,包含在 header里
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}

# url 连同 headers,一起构造Request请求,这个请求将附带 chrome 浏览器的User-Agent
request = urllib.request.Request("http://www.baidu.com/", headers = header)

# 向服务器发送这个请求
response = urllib.request.urlopen(request)

html = response.read()

print(html)
Nach dem Login kopieren

Eine bestimmte Kopfzeile hinzufügen

可以通过调用Request.add_header() 添加/修改一个特定的header
也可以通过调用Request.get_header()来查看已有的header。
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGrundlagen der Verwendung der Bibliothek urllib.request. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage