先ほど urllib2 の簡単な紹介について説明しましたが、ここでは urllib2 の使用方法について詳しく説明します。
1.プロキシ設定
urllib2は、環境変数http_proxyを使用してデフォルトでHTTPプロキシを設定します。
環境変数の影響を受けずにプログラム内で Proxy を明示的に制御したい場合は、プロキシを使用できます。
新しい test14 を作成して単純なプロキシ デモを実装します:
import urllib2 enable_proxy = True proxy_handler = urllib2.ProxyHandler({"http" : 'http://some-proxy.com:8080'}) null_proxy_handler = urllib2.ProxyHandler({}) if enable_proxy: opener = urllib2.build_opener(proxy_handler) else: opener = urllib2.build_opener(null_proxy_handler) urllib2.install_opener(opener)
ここで注意すべき点の 1 つは、urllib2.install_opener() を使用すると、urllib2 のグローバル オープナーが設定されることです。
これは後で使用する場合に非常に便利ですが、プログラム内で 2 つの異なる Proxy 設定を使用したい場合など、より詳細な制御はできません。
より良いアプローチは、グローバル設定を変更するために install_opener を使用するのではなく、グローバル urlopen メソッドの代わりにオープナーの open メソッドを直接呼び出すことです。
2. タイムアウト設定
Python の古いバージョン (Python 2.6 より前) では、urllib2 の API はタイムアウト設定を公開していません。タイムアウト値を設定するには、ソケットのグローバル タイムアウト値を変更することしかできません。
import urllib2 import socket socket.setdefaulttimeout(10) # 10 秒钟后超时 urllib2.socket.setdefaulttimeout(10) # 另一种方式
Python 2.6 以降では、urllib2.urlopen() の timeout パラメーターを通じてタイムアウトを直接設定できます。
import urllib2 response = urllib2.urlopen('http://www.google.com', timeout=10)
3. HTTP リクエストに特定のヘッダーを追加します
ヘッダーを追加するには、Request オブジェクトを使用する必要があります:
import urllib2 request = urllib2.Request('http://www.baidu.com/') request.add_header('User-Agent', 'fake-client') response = urllib2.urlopen(request) print response.read()
一部のヘッダーには特に注意してください。サーバーはこれらのヘッダーをチェックします
ユーザーエージェント:一部のサーバーまたはプロキシは、この値を使用して、リクエストがブラウザーによって行われたかどうかを判断します。
Content-Type: REST インターフェイスを使用する場合、サーバーはこの値をチェックして、HTTP 本文のコンテンツをどのように解析するかを決定します。一般的な値は次のとおりです:
application/xml: RESTful/SOAP などの XML RPC を呼び出すときに使用されます
application/json: JSON RPC を呼び出すときに使用されます
application/x-www-form-urlencoded: ブラウザーが Web フォームを送信するときに使用しますサーバーが提供する RESTful または SOAP サービスを使用する場合、誤った Content-Type 設定によりサーバーがサービスを拒否します
urllib2 は HTTP 3XX リターン コードに対してリダイレクト アクションを自動的に実行します。デフォルトでは、手動構成は必要ありません。リダイレクト アクションが発生したかどうかを検出するには、レスポンスの URL とリクエストの URL が一致しているかどうかを確認するだけです。
import urllib2 my_url = 'http://www.google.cn' response = urllib2.urlopen(my_url) redirected = response.geturl() == my_url print redirected my_url = 'http://rrurl.cn/b1UZuP' response = urllib2.urlopen(my_url) redirected = response.geturl() == my_url print redirected自動的にリダイレクトしたくない場合は、下位レベルの httplib ライブラリを使用することに加えて、HTTPRedirectHandler クラスをカスタマイズすることもできます。
import urllib2 class RedirectHandler(urllib2.HTTPRedirectHandler): def http_error_301(self, req, fp, code, msg, headers): print "301" pass def http_error_302(self, req, fp, code, msg, headers): print "303" pass opener = urllib2.build_opener(RedirectHandler) opener.open('http://rrurl.cn/b1UZuP')5.Cookieurllib2 も Cookie を自動的に処理します。 Cookie 項目の値を取得する必要がある場合は、次のようにすることができます:
import urllib2 import cookielib cookie = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) response = opener.open('http://www.baidu.com') for item in cookie: print 'Name = '+item.name print 'Value = '+item.value実行後、Baidu にアクセスするための Cookie 値が出力されます:
import urllib2 request = urllib2.Request(uri, data=data) request.get_method = lambda: 'PUT' # or 'DELETE' response = urllib2.urlopen(request)7. HTTP リターン コードを取得します 200 OK の場合は、urlopen メソッドによって返された応答オブジェクトの getcode() を使用して取得します。 HTTP 戻りコード。ただし、他の戻りコードの場合、urlopen は例外をスローします。このとき、例外オブジェクトの code 属性を確認する必要があります:
import urllib2 try: response = urllib2.urlopen('http://bbs.csdn.net/why') except urllib2.HTTPError, e: print e.code8.デバッグログ urllib2 を使用する場合、以下のメソッドでデバッグログを開くことができ、送受信の内容が確認できます。パケットは画面に表示され、デバッグに便利です。場合によっては、パケット キャプチャの作業を保存できます
import urllib2 httpHandler = urllib2.HTTPHandler(debuglevel=1) httpsHandler = urllib2.HTTPSHandler(debuglevel=1) opener = urllib2.build_opener(httpHandler, httpsHandler) urllib2.install_opener(opener) response = urllib2.urlopen('http://www.google.com')このようにして、送信されたデータ パケットの内容を確認できます:
たとえば、私は通常、Firefox + httpfox プラグインを使用して、送信したパッケージを確認します。
verycd を例として考えます。まず、送信した POST リクエストと POST フォーム項目を見つけます。
verycd の場合、username、password、 continueURI、fk、login_submit を入力する必要があることがわかります。このうち、fk はランダムに生成されます (実際にはそれほどランダムではなく、単にエポックタイムをエンコードすることによって生成されているように見えます)。 「Web ページの取得から開始する必要がある」とは、最初に Web ページにアクセスし、正規表現などのツールを使用して、返されたデータ内の fk 項目をインターセプトする必要があることを意味します。名前の通り、 continueURI は気軽に書けるのに対し、login_submit は固定であることがソースコードからも分かります。ユーザー名とパスワードもありますが、これは明白です:
# -*- coding: utf-8 -*- import urllib import urllib2 postdata=urllib.urlencode({ 'username':'汪小光', 'password':'why888', 'continueURI':'http://www.verycd.com/', 'fk':'', 'login_submit':'登录' }) req = urllib2.Request( url = 'http://secure.verycd.com/signin', data = postdata ) result = urllib2.urlopen(req) print result.read()10. ブラウザに偽装してアクセスします
一部の Web サイトはクローラーの訪問を嫌うため、クローラーからのリクエストを拒否します
現時点では、ブラウザに偽装する必要があります。 、これは、
#… headers = { 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6' } req = urllib2.Request( url = 'http://secure.verycd.com/signin/*/http://www.verycd.com/', data = postdata, headers = headers ) #...11 を達成するために http パッケージのヘッダーを変更することで実行できます。「アンチホットリンク」に対処するには
一部のサイトには、いわゆるアンチホットリンク設定があります。実際、それを行うのは非常に簡単です。率直に言って、
#... headers = { 'Referer':'http://www.cnbeta.com/articles' } #...
たとえば、一部の Web サイトはヘッダーの X-Forwarded-For を読み取り、実際の IP を確認することを好み、X-Forwarde-For を直接変更できます。
上記は、[Python] Web クローラー (5): urllib2 の使用方法の詳細と Web サイトのクローリング技術です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

Pythonlistscanstoreanydatatype,arraymodulearraysstoreonetype,andNumPyarraysarefornumericalcomputations.1)Listsareversatilebutlessmemory-efficient.2)Arraymodulearraysarememory-efficientforhomogeneousdata.3)NumPyarraysareoptimizedforperformanceinscient

heouttemptemptostoreavure ofthewrongdatatypeinapythonarray、yure counteractypeerror.thisduetothearraymodule'sstricttypeeencultionyを使用します

PythonListSarePartOfThestAndardarenot.liestareBuilting-in、versatile、forStoringCollectionsのpythonlistarepart。

theScriptisrunningwithwrongthonversionduetorectRectDefaultEntertersettings.tofixthis:1)CheckthedededefaultHaulthonsionsingpython - versionorpython3-- version.2)usevirtualenvironmentsbycreatingonewiththon3.9-mvenvmyenv、andverixe

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ホットトピック









