urllib2 は Python2.7 に付属するモジュールです (ダウンロードする必要はなく、インポートするだけで使用できます)。
urllib2 ライブラリの基本的な使用法
いわゆる Web ページ クローリングでは、URL アドレスで指定されたネットワーク リソースをネットワーク ストリームから読み取り、ローカルに保存します。 。 Python には Web ページのクロールに使用できるライブラリが多数ありますが、まず urllib2 について学習しましょう。
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 は、python3.x
urlopen
で urllib.request に変更されました。コードの一部から始めましょう:
# urllib2_urlopen.py # 导入urllib2 库 import urllib2 # 向指定的url发送请求,并返回服务器响应的类文件对象 response = urllib2.urlopen("http://www.baidu.com") # 类文件对象支持 文件对象的操作方法,如read()方法读取文件全部内容,返回字符串 html = response.read() # 打印字符串 print html
書かれた Python コードを実行すると結果が表示されます
Power@PowerMac ~$: python urllib2_urlopen.py
実際、ブラウザで Baidu のホームページを開き、右クリックして [ソース コードの表示] を選択すると、まさにそのとおりであることがわかります。先ほど印刷したものと同じです。言い換えれば、上記の 4 行のコードは、Baidu のホームページ上のすべてのコードをクロールダウンするのに役立ちました。
基本的な URL リクエストに対応する Python コードは、実際には非常に単純です。
Request
最初の例では、urlopen() のパラメータは URL アドレスです。
ただし、より複雑な操作を実行する必要がある場合は、 HTTP ヘッダーの追加などを行うには、urlopen() のパラメーターとして Request インスタンスを作成する必要があり、アクセスする必要がある URL アドレスは Request インスタンスのパラメーターとして使用されます。
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
を編集します。実行結果はまったく同じです:
新建Request实例,除了必须要有 url 参数之外,还可以设置另外两个参数: data(默认空):是伴随 url 提交的数据(比如要post的数据),同时 HTTP 请求将从 "GET"方式 改为 "POST"方式。 headers(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。 这两个参数下面会说到。
User-Agent
ただし、これはurllib2 を使用して Web サイトにリクエストを送信するのは、確かに少し唐突です。どの家にもドアがあるのと同じように、通行人として直接侵入するのは明らかに礼儀正しくありません。さらに、サイトによってはプログラムによる訪問 (人間以外の訪問) を嫌っており、アクセス要求を拒否する場合があります。
しかし、法的アイデンティティを使用して他の人の Web サイトをリクエストする場合、それらは明らかに歓迎されるため、コードにアイデンティティ (いわゆる User-Agent ヘッダー) を追加する必要があります。
ブラウザは、インターネットの世界で認識され、許可されているアイデンティティです。クローラー プログラムを実際のユーザーに近づけたい場合、最初のステップは、認識されたブラウザのふりをすることです。ブラウザーが異なれば、リクエストを送信する際の User-Agent ヘッダーも異なります。 urllib2 のデフォルトの User-Agent ヘッダーは次のとおりです: Python-urllib/x.y (x と y は Python-urllib/2.7 などの Python のメジャー バージョン番号とマイナー バージョン番号です)
#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
Addヘッダー情報の詳細
特定のヘッダーを HTTP リクエストに追加して、完全な HTTP リクエスト メッセージを作成します。
Request.add_header() を呼び出して特定のヘッダーを追加/変更したり、Request.get_header() を呼び出して既存のヘッダーを表示したりできます。
特定のヘッダーを追加する
# 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
ユーザー エージェントをランダムに追加/変更する
# 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
関連チュートリアルの推奨事項 : Python ビデオ チュートリアル
以上がPython で urllib2 ライブラリをインストールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。