いわゆる Web ページのクローリングは、URL アドレスで指定されたネットワーク リソースをネットワーク ストリームから読み取り、ローカルに保存します。 Python には、Web ページのクロールに使用できるライブラリが多数あります。まず urllib.request について学びましょう。 (python2 の urllib2。出力結果は上記のプログラムを実行した場合とまったく同じです。言い換えれば、上記の数行のコードは、Baidu のホームページのすべてのコードをクロールダウンするのに役立ちました。
上記の例では、urlopen()のパラメータは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」に変更されます。
ユーザーエージェント
クローラー プログラムを実際のユーザーに近づけたい場合、最初のステップは、認識されたブラウザーのふりをすることです。ブラウザーが異なれば、リクエストを送信する際の 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)
さらにヘッダー情報を追加
#!/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 サイトの他の関連記事を参照してください。