文章目录
python爬虫-----request模块学习及案例
基本知识
str和bytes的区别
python3中:
str 使用encode方法转化为 bytes
bytes通过decode转化为str
在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。
str1 = '人生苦短'
b = str1.encode()
str1 = b.decode()
print(str1)
print(type(str1))
print('***************')
print(b)
print(type(b))
结果输出
人生苦短
<class 'str'>
***************
b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad'
<class 'bytes'>
urllib库
常见方法
1.request.urlopen()
import urllib
urllib.request.urlopen(url,data,timeout)
- 第一个参数ur即为URL,第二个参数data是访问URL时要传送的数据, 第三个timeout是设置超时时间。
- 第二三个参数是可以不传送的,data默认为空None, timeout默认为socket._GLOBAL DEFAULT _TIMEOUT
- 第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后, 返回一个response对象,返回信息便保存在这里面。
2.read()
- read()方法就是读取文件内的全部内容,返回bytes类型
3.getcode()
- 返回HTTP的响应码,成功返回200,4服务器页面出错,5服务器问题
4.info()
- 返回服务器响应HTTP报头
import urllib.request
url1 = "http://www.baidu.com/"
f = urllib.request.urlopen(url1)
info = f.read()
#print(info.decode())
print(f.geturl())
print('***********************')
print(f.getcode())
print('***********************')
print(f.info())
输出结果
http://www.baidu.com/
***********************
200
***********************
Bdpagetype: 1
Bdqid: 0x853689130000c1c9
Cache-Control: private
Content-Type: text/html;charset=utf-8
Date: Tue, 16 Mar 2021 12:20:23 GMT
Expires: Tue, 16 Mar 2021 12:19:47 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Server: BWS/1.1
Set-Cookie: BAIDUID=E5EA9206E149F08295546FF28C768CE2:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=E5EA9206E1