ホームページ  >  記事  >  バックエンド開発  >  urllib.request ライブラリの使用の基本

urllib.request ライブラリの使用の基本

巴扎黑
巴扎黑オリジナル
2017-07-18 13:50:492976ブラウズ

いわゆる Web ページのクローリングは、URL アドレスで指定されたネットワーク リソースをネットワーク ストリームから読み取り、ローカルに保存します。 Python には、Web ページのクロールに使用できるライブラリが多数あります。まず urllib.request について学びましょう。 (python2 の urllib2。出力結果は上記のプログラムを実行した場合とまったく同じです。言い換えれば、上記の数行のコードは、Baidu のホームページのすべてのコードをクロールダウンするのに役立ちました。

Reuqest

上記の例では、urlopen()のパラメータはURLアドレスです。

ただし、HTTP ヘッダーの追加など、より複雑な操作を実行する必要がある場合は、urlopen() のパラメーターとして Request インスタンスを作成し、Request インスタンスのパラメーターとしてアクセスする必要がある URL アドレスを作成する必要があります。

#!/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)

実行結果はまったく同じです:

新しく作成されたRequestインスタンスは、urlパラメータに加えて、他の2つのパラメータも設定できます:

1.data (デフォルトは空): これは付随するものです。 url 送信されたデータ(投稿データなど)、HTTPリクエストが「GET」から「POST」に変更されます。

2.headers (デフォルトでは空): 送信する必要がある HTTP ヘッダーのキーと値のペアを含む辞書です。

ユーザーエージェント

クローラー プログラムを実際のユーザーに近づけたい場合、最初のステップは、認識されたブラウザーのふりをすることです。ブラウザーが異なれば、リクエストを送信する際の User-Agent ヘッダーも異なります。 urllib.request のデフォルトの User-Agent ヘッダーは次のとおりです: Python-urllib/x.y (x と y は Python-urllib/3.5 などの Python のメジャー バージョン番号とマイナー バージョン番号です)

#!/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)

さらにヘッダー情報を追加

特定のヘッダーを HTTP リクエストに追加して、完全な HTTP リクエスト メッセージを作成します。

#!/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)

特定のヘッダーを追加します

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

以上がurllib.request ライブラリの使用の基本の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。