在爬虫前,需要知道这两个知识点!!!
字符串转字节类型
str --> bytes
encode()
字节类型转字符串
bytes --> str
decode()
1.以一个简单的例子讲解urllib.request方法
read 读取相应内容,内容
geturl 获取请求的url
getheaders 获取头部信息
getcode 获取状态码
readlines 按行读取,返回列表,都是字节类型
1.1获取百度的网页代码
import urllib.request
url = "https://www.baidu.com"
response = urllib.request.urlopen(url)
#打印出来是二进制
print(response.read().decode('utf8'))
# 获取状态码
print(response.getcode())
# 获取响应头
print(response.getheaders())
# 获取url
print(response.geturl())
# 把读取到的内容保存起来的两种方法
# 第一种方法w以字符串写入
with open("baidu.html","w",encoding='utf8') as f:
f.write(response.read().decode('utf8'))
#第二种方法 wb以二进制写入
with open("baidu.html","wb") as f:
f.write(response.read())
1.2爬取百度里面的图片为例子
import urllib.request
image_url = 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=
1561806237168&di=319407f10b4c55baf1d5b905d8a2f20a&imgtype=0&src=http%3A%2F%2
Fimg2.ph.126.net%2F2zB3_wWPXlEW0RdwQa8d6A%3D%3D%2F2268688312388037455.jpg'
#第一种方法
# response = urllib.request.urlopen(image_url)
#像图片只能写入到本地二进制的格式
# with open('qing.jpg','wb') as fp:
# fp.write(response.read())
#第二种方法
urllib.request.urlretrieve(image_url,'chun.jpg')
2.以一个简单的例子讲述parse方法
quote url编码函数,将中文进行转化为%xxx
unquote url解码函数,将%xxx转化为指定字符
urlencode 给一个字典,将字典拼接为query_string
2.1自己写一个url进行操作
import urllib.parse
url = 'http://www.baidu.com/index.html'
#http://www.baidu.com/index.html?name=goudan&age=18&sex=nv&height=180
name = '狗蛋'
age = 18
sex = '女'
height = '180'
data={
'name':name,
'age':age,
'sex':sex,
'height':height
}
#第一种方法
query_string = urllib.parse.urlencode(data)
print(query_string)
#第二种方法
#遍历字典
# it = []
# for k,v in data.items():
# it.append(k+'='+str(v))
# query_string = '&'.join(it)
url = url+'?'+query_string
print(url)
这就是request与parse方法!!!