初识urllib原生框架
爬虫流程:url处理 => 建立连接爬取数据 => 数据分析 => 数据存储
import urllib.request # url相关的基本函数
import urllib.parse # 导入parse,这个库主要用于处理url的格式问题
基本函数介绍
创建一个url
url = "http://www.baidu.com/"
urllib.request.urlopen()函数
说明:urlopen()这个方法用于打开一个远程链接,并且返回响应对象
返回值:<http.client.HTTPResponse object at 0x7ffa4efc1898>
常用参数:url
res = urllib.request.urlopen(url)
urllib.request.urlretrieve()函数
说明:urlretrieve()用于把url的内容下载下载下来存储到filename目录下
常用参数:url,filename:文件存储路径
urllib.request.urlretrieve(url, "./baidu.html")
参数解析部分
用到了urllib.parse模块
urllib.parse.urlencode(dic)函数
说明:建立一个字典存储参数,urllib库不能识别汉字,如果有汉字需要转成ascii编码格式
返回值:string,url后面的参数
# urlencode() urllib库不能识别汉字,如果有汉字需要转成ascii编码格式
# 1)把待处理的参数写成字典的形式
dic = {"wd": "赵丽颖"}
# 2)用urlencode()方法字典处理成url参数形式(xx==xx&pp=pp)
data = urllib.parse.urlencode(dic)
header伪装成浏览器部分
用到了urllib.request模块
用户代理:有些网站为了防止某些恶意的爬虫攻击网站,会设置用户代理,进行过滤,返回403
解决方案:伪装成浏览器
header = {
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)"
}
构建ruquest对象,并让其携带用户代理
1.第一种方法
req = urllib.request.Request(url=url, headers=header)
res = urllib.request.urlopen(url=req)
2.第二种方法
req = urllib.request.Request(url=url)
req.add_header("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)")