urllib 介绍
官网urllib 是一个收集了多个涉及 URL 的模块的包
- urllib.request 打开和读取 URL
- urllib.error 包含 urllib.request 抛出的异常
- urllib.parse 用于解析 URL
- urllib.robotparser 用于解析 robots.txt 文件
import urllib.request
import re
import ssl
#若报错:unable to get local issuer certificate(⽆法获取本地颁发者证书)错误,请使⽤下
⾯代码
#全局取消证书验证
ssl._create_default_https_context = ssl._create_unverified_context
#封装request请求
url = "https://news.baidu.com/"
req = urllib.request.Request(url)
#执⾏请求获取响应信息
res = urllib.request.urlopen(req)
# 从响应对象中读取信息并解码
html = res.read().decode("utf-8")
#print(len(html))
#使⽤正则解析出新闻标题信息
pat = '<a href="(.*?)" .*? target="_blank">(.*?)</a>'
dlist = re.findall(pat,html)
# 遍历输出结果
for v in dlist:
print(v[1]+":"+v[0])
Requests 介绍
简单使用
import requests
import re
url = "http://www.baidu.com"
# 抓取信息
res = requests.get(url)
#获取HTTP状态码
print("status:%d" % res.status_code)
# 获取响应内容
data = res.content.decode("utf-8")
#解析出结果
print(re.findall("<title>(.*?)</title>",data))
其他 HTTP 请求类型:PUT,DELETE,HEAD 以及 OPTIONS
import requests
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
requests的响应对象:requests.models.Response
- response.text 获取str类型(Unicode编码)的响应
- response.content 获取bytes类型的响应
- response.content.decode("utf-8") 将获取的bytes类型进⾏解码(转字串)
- response.status_code 获取响应状态码
- response.headers 获取响应头
- response.request 获取响应对应的请求
# 使⽤requests库GET请求⽅式爬取⼩⽶商品详情信息
import requests
import re
#准备请求参数、url地址
data = {
'product_id':'10000214'
}
url = "http://www.mi.com/buy/detail"
#执⾏get请求
res = requests.get(url,params=data)
#获取响应信息
print(res.status_code)
html = res.content.decode('utf-8')
#解析结果
pat = '<title>(.*?)</title>'
str= re.findall(pat,html)
print(str)