python爬虫之urllib_get

1.使用urllib发起请求

from urllib import request
import ssl

2.目标url

url = 'http://www.baidu.com/'

3.request.urlopen():使用urlopen方法模拟浏览器发起请求

"""
url, 请求的目标url地址
data=None,默认情况为None,表示发起的是一个get请求,不为None,则发起的是一个post请求
timeout=,设置请求的超时时间 
cafile=None, 设置证书
capath=None, 设置证书路径
cadefault=False, 是否要使用默认证书(默认为False)
context=None:是一个ssl值,表示忽略ssl认证
"""

4.是一个ssl值,表示忽略ssl认证(如果请求出现了ssl证书认证错误,

5.我们就需要设置ssl._create_unverified_context(),忽略证书认证)

content = ssl._create_unverified_context()
response = request.urlopen(url,timeout=10,content=content)

6.从response响应结果中获取参数

7.状态码

code = response.status
print(code)

8.获取页面源码的二进制数据

b_html = response.read()
print(type(b_html),len(b_html))

9.获取响应的响应头部(Response Headers)

res_headers = response.getheaders()
print(res_headers)

10.获取响应头中指定参数的值

cookie_data = response.getheader('Set-Cookie')
print(cookie_data)

11.reason返回一个响应结果的原因

reason = response.reason
print(reason)

12.将获取到的二进制数据,转换为字符串decode

str_html = b_html.decode('utf-8')
print(type(str_html))

with open('b_baidu.page.html','w') as file:
# file.write(b_html)
file.write(str_html)

13.如果请求要携带请求头

14.需要先构建一个request对象

"""
url:发起请求的url地址
data=None, 默认情况为None,表示发起的是一个get请求,不为None,则发起的是一个post请求
headers={},设置请求头(headers对应的数据类型是一个字典)
origin_req_host=None, (指定发起请求的域)
unverifiable=False,忽略SSL认证
method=None:指定发起请求的方式
"""
req_header = {
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
req = request.Request(url,headers=req_header)

15.根据构建的req请求对象发起请求

response = request.urlopen(req)
response.status
response.read()
response.getheaders()
response.getheader('Server')
response.reason

16.str和bytes数据类型

python2中:对于字符串和bytes类型的数据没有明显的区分

python3中:对于字符串和bytes类型的数据有明显的区分
将bytes类型的数据转换为字符串使用decode('编码类型')
将字符串转换为bytes类型的数据使用encode('编码类型')
bytearray和bytes类型的数据是有区别的:前者是可变的,后者是不可变的

17.常见的字符集的编码类型: utf-8 gbk gb2312

你可能感兴趣的:(python爬虫之urllib_get)