本文是我在使用网易云课堂学习日月光华老师讲的“Python爬虫零基础入门到进阶实战”课程所做的笔记,如果大家觉得不错,可以去看一下老师的视频课,讲的还是很棒的。
Urllib库的四个模块1.urllib.request打开和读取URL
2.urllib.error包含Urllib.request各种错误的模块
3.urllib.parse解析URL
4.urllib.robotparse解析网站robots.txt文件
Urllib库的使用
发送GET请求
# 引入urlopen库 用于打开网页
from urllib.request import urlopen
# 获取内容
html = urlopen('https://www.douban.com')
# 读取返回的内容
response = html.read()
# 输出(豆瓣首页二进制源代码)
print(response)
# 对二进制内容进行解码
# 输出(豆瓣首页文本代码)
print(response.decode('utf-8'))
实现效果
传递URL参数
# 引入requests请求模块
import urllib.request
# 引入网址解析模块
import urllib.parse
payload = {'q':'python','cat':'1001'}
requst_url = 'https://www.douban.com/search'
# 对要添加的URL参数进行编码
payload_encode = urllib.parse.urlencode(payload)
# 构造实际请求的URL
url = requst_url + '?' + payload_encode
# 请求直接返回的是二进制
response = urllib.request.urlopen(url)
# 解码并输出
print(response.read().decode('utf-8'))
实现效果
模拟浏览器发送GET请求
# 引入requests请求模块
import urllib.request
# 引入网址解析模块
import urllib.parse
url = 'https://www.douban.com'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'}
# 构造请求 在url中添加User-Agent
request = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(request).read()
POST发送一个请求
# 可以在下面直接调用request和parse
from urllib import request, parse
post_data = parse.urlencode([('key1', 'v1'), ('k2', 'v2')])
# 构造请求url,构造一个Request对象
url = request.Request('http://httpbin.org/post')
# 添加headers
url.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36')
response = request.urlopen(url, data=post_data.encode('utf-8')).read()
print(response)
urljoin函数
# 使用urljoin拼接正确URL
from urllib.parse import urljoin
urljoin('https://accounts.douban.com','/passport/login')