Spider--Urlアドレスエンコーディングモジュール(urlencode({dict})、quote(string)、unquote(string))
9491 ワード
1、モジュール名及び導入
モジュール
#
urllib.parse
#
import urllib.parse
from urllib import parse
作用
URL
:https://www.baidu.com/s?wd=
:https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
2、常用方法
urllib.parse.urlencode({dict})
URLアドレスのクエリパラメータ
# :{'wd' : ' '}
# urlencode :'wd=%e7%be%8e%e5%a5%b3'
#
query_string = {'wd' : ' '}
result = urllib.parse.urlencode(query_string)
# result: 'wd=%e7%be%8e%e5%a5%b3'
URLアドレスにおける複数のクエリーパラメータ
from urllib import parse
params = {
'wd' : ' ',
'pn' : '50'
}
params = parse.urlencode(query_string_dict)
url = 'http://www.baidu.com/s?{}'.format(params)
print(url)
URLアドレスをつなぎ合わせる3つの方式
# 1、
baseurl = 'http://www.baidu.com/s?'
params = 'wd=%E7XXXX&pn=20'
url = baseurl + params
# 2、 ( )
params = 'wd=%E7XXXX&pn=20'
url = 'http://www.baidu.com/s?%s'% params
# 3、format()
url = 'http://www.baidu.com/s?{}'
params = 'wd=#E7XXXX&pn=20'
url = url.format(params)
コード実装-03_parse_baidu.py
from urllib import request
from urllib import parse
# URL
def get_url(word):
url = 'http://www.baidu.com/s?{}'
# params: wd=%E7XXXXX
params = parse.urlencode({'wd':word})
url = url.format(params)
return url
# ,
def request_url(url,filename):
headers = {'User-Agent':'Mozilla/5.0'}
# + +
req = request.Request(url=url,headers=headers)
res = request.urlopen(req)
html = res.read().decode('utf-8')
#
with open(filename,'w',encoding='utf-8') as f:
f.write(html)
#
if __name__ == '__main__':
word = input(' :')
url = get_url(word)
filename = word + '.html'
request_url(url,filename)
quote符号化
例1
from urllib import parse
string = ' '
print(parse.quote(string))
# : %E7%BE%8E%E5%A5%B3
前urlencode()コードを書き換えquote()メソッドで実現
from urllib import parse
url = 'http://www.baidu.com/s?wd={}'
word = input(' :')
query_string = parse.quote(word)
print(url.format(query_string))
unquote復号
例
from urllib import parse
string = '%E7%BE%8E%E5%A5%B3'
result = parse.unquote(string)
print(result)