Python3访问网络


转载请注明出处

本文出自Hansion的博客




Python3以后, urllib库和urilib2库合并为 urllib库

urllib2.urlopen() 的写法更改为 urllib.request.urlopen()
urllib2.Request() 的写法更改为 urllib.request.Request()  

访问网络示例


import urllib.parse
import urllib.request
url = 'http://www.baidu.com/s'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'WHY',    
         'location' : 'SDU',    
         'language' : 'Python',
         'ie' : 'utf-8',
         'wd' : 'python' }
headers = { '<a href="https://www.baidu.com/s?wd=User-Agent&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3nH79uHT3PWmYmyfsrHIh0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHfYPH6vPjbLn1RLPjTzrjDYn0" target="_blank" class="baidu-highlight">User-Agent</a>' : user_agent }
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url+'?'+data)
response = urllib.request.urlopen(req)
the_page = response.read()
print(the_page.decode('UTF8'))



如果要添加headers,第12行就要写成这样

req = urllib.request.Request(url, data, headers)


运行时会报错:TypeError: POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.


我们还需要在第11行后面加上.encode(encoding='UTF8') 才行


data = urllib.parse.urlencode(values).encode(encoding='UTF8')






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值