python爬虫学习记录【1】
urllib.request.urlopen()函数
urllib.request.urlopen(url,data = None,[ timeout,] *,cafile = None,capath = None,cadefault = False,context = None )
参数详解:
url:可以是一个字符串,也可以是一个Request类。当使用字符串当作参数时,python会自动把字符串转变为Request类,再将其传输给urlopen()函数。所以以下的两种写法的效果为一样的。
response = urllib.request.urlopen("www.baidu.com")
req = urllib.request.Request("www.baidu.com")
response = urllib.request.urlopen("req")
data:指定要发送给服务器的数据,但这个data只能是application / x-www-form-urlencoded类型,这个类型需要用urllib.parse.urlencode()函数来进行转换,它的参数需要是一个映射对象,即字典,或者包含两个元素的元组,它们可以包含字符串或者byte。
其它的参数暂时没有用到。
以下为今晚的代码:
import urllib.request
import urllib.parse
def way_1():
response = urllib.request.urlopen("http://placekitten.com/200/300")
cat_img = response.read()
with open('cat_200_300.jpg', 'wb') as f:
f.write(cat_img)
def way_2():
req = urllib.request.Request("http://placekitten.com/400/500")
response = urllib.request.urlopen(req)
cat_img = response.read()
with open('cat_400_500.jpg', 'wb') as f:
f.write(cat_img)
def translation():
url = "https://fanyi.baidu.com/v2transapi"
data = {}
data['from'] = 'zh'
data['to'] = 'en'
data['query'] = "你好,世界"
data['transtype'] = 'realtime'
data['simple_means_flag'] = '3'
data['sign'] = ['933122.712243']
data['token'] = '76fadbccd41e44e52c5bb8bf9b32b37c'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url, data)
html = response.read().decode('utf-8')
print(html)
if __name__ == '__main__':
way_1()
way_2()
translation()
encode()函数:编码
decode()函数:解码,返回字符串。