urllib2 ist ein Modul, das mit Python2.7 geliefert wird (kein Download erforderlich, einfach importieren und verwenden).
Grundlegende Verwendung der urllib2-Bibliothek
Das sogenannte Webseiten-Crawling besteht darin, die in der URL-Adresse angegebenen Netzwerkressourcen aus dem Netzwerkstream zu lesen und lokal zu speichern . Es gibt viele Bibliotheken in Python, die zum Crawlen von Webseiten verwendet werden können. Lassen Sie uns zunächst urllib2 lernen.
urllib2 是 Python2.7 自带的模块(不需要下载,导入即可使用) urllib2 官方文档:https://docs.python.org/2/library/urllib2.html urllib2 源码:https://hg.python.org/cpython/file/2.7/Lib/urllib2.py
urllib2 wurde in urllib.request geändert
urlopen
Beginnen wir mit einem Code:
# urllib2_urlopen.py # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.baidu.com") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html
Führen Sie das aus Schreiben Sie den Python-Code und drucken Sie das Ergebnis aus
Power@PowerMac ~$: python urllib2_urlopen.py
Wenn wir tatsächlich die Baidu-Homepage im Browser öffnen, mit der rechten Maustaste klicken und „Quellcode anzeigen“ auswählen, werden Sie feststellen, dass es genau das Gleiche ist wie das, was wir haben gerade gedruckt. Mit anderen Worten: Die oben genannten vier Codezeilen haben uns dabei geholfen, den gesamten Code auf der Baidu-Homepage zu durchsuchen.
Der Python-Code, der einer einfachen URL-Anfrage entspricht, ist wirklich sehr einfach.
Anfrage
In unserem ersten Beispiel ist der Parameter von urlopen() eine URL-Adresse;
Wenn Sie jedoch komplexere Vorgänge ausführen müssen B. das Hinzufügen von HTTP-Headern, muss eine Request-Instanz als Parameter von urlopen() erstellen und die URL-Adresse, auf die zugegriffen werden muss, wird als Parameter der Request-Instanz verwendet.
Wir bearbeiten urllib2_request.py
# urllib2_request.py import urllib2 # url 作为Request()方法的参数,构造并返回一个Request对象 request = urllib2.Request("http://www.baidu.com") # Request对象作为urlopen()方法的参数,发送给服务器并接收响应 response = urllib2.urlopen(request) html = response.read() print html
Das laufende Ergebnis ist genau das gleiche:
新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数: data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。 headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。 这两个参数下面会说到。
User-Agent
Aber das ist direkt Die Verwendung von urllib2 zum Senden einer Anfrage an eine Website ist in der Tat etwas abrupt. So wie jedes Haus eine Tür hat, ist es offensichtlich nicht sehr höflich, wenn Sie als Passant hereinplatzen. Darüber hinaus möchten einige Websites nicht von Programmen besucht werden (nichtmenschliche Besuche) und verweigern möglicherweise Ihre Zugriffsanfrage.
Aber wenn wir eine legale Identität verwenden, um die Websites anderer Leute anzufordern, werden diese das natürlich begrüßen, also sollten wir unserem Code eine Identität hinzufügen, den sogenannten User-Agent-Header.
Der Browser ist eine anerkannte und erlaubte Identität in der Internetwelt. Wenn wir möchten, dass unser Crawler-Programm eher einem echten Benutzer ähnelt, müssen wir zunächst so tun, als wären wir ein anerkannter Browser. Verschiedene Browser verfügen beim Senden von Anfragen über unterschiedliche User-Agent-Header. Der standardmäßige User-Agent-Header von urllib2 lautet: Python-urllib/x.y (x und y sind die Haupt- und Nebenversionsnummern von Python, z. B. Python-urllib/2.7)
#urllib2_useragent.py import urllib2 url = "http://www.itcast.cn" #IE 9.0 的 User-Agent,包含在 ua_header里 ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} # url 连同 headers,一起构造Request请求,这个请求将附带 IE9.0 浏览器的User-Agent request = urllib2.Request(url, headers = ua_header) # 向服务器发送这个请求 response = urllib2.urlopen(request) html = response.read() print html
Hinzufügen Weitere Header-Informationen
Fügen Sie der HTTP-Anfrage einen bestimmten Header hinzu, um eine vollständige HTTP-Anfragenachricht zu erstellen.
Sie können einen bestimmten Header hinzufügen/ändern, indem Sie Request.add_header() aufrufen, oder vorhandene Header anzeigen, indem Sie Request.get_header() aufrufen.
Fügen Sie einen bestimmten Header hinzu
# urllib2_headers.py import urllib2 url = "http://www.itcast.cn" #IE 9.0 的 User-Agent header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} request = urllib2.Request(url, headers = header) #也可以通过调用Request.add_header() 添加/修改一个特定的header request.add_header("Connection", "keep-alive") # 也可以通过调用Request.get_header()来查看header信息 # request.get_header(header_name="Connection") response = urllib2.urlopen(req) print response.code #可以查看响应状态码 html = response.read() print html
Benutzeragenten nach dem Zufallsprinzip hinzufügen/ändern
# urllib2_add_headers.py import urllib2 import random url = "http://www.itcast.cn" ua_list = [ "Mozilla/5.0 (Windows NT 6.1; ) Apple.... ", "Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ", "Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ", "Mozilla/5.0 (Macintosh; Intel Mac OS... " ] user_agent = random.choice(ua_list) request = urllib2.Request(url) #也可以通过调用Request.add_header() 添加/修改一个特定的header request.add_header("User-Agent", user_agent) # 第一个字母大写,后面的全部小写 request.get_header("User-agent") response = urllib2.urlopen(req) html = response.read() print html
Verwandte Tutorial-Empfehlungen: Python-Video-Tutorial
Das obige ist der detaillierte Inhalt vonSo installieren Sie die urllib2-Bibliothek in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!