Urllib简单爬取网页
导入模块
import urllib.request
打开并爬取网页
file=urllib.request.urlopen("http://www.baidu.com")
读取内容
data=file.read()
- file.read()读取全部内容
- file.readlines()读取全部内容,与read不同的是,readline会将读取的内容赋给列表变量
- file.readline()读取一行内容
将内容写进文件
fhandle=open("D:/test.html","wb")
fhandle.write(data)
fhandle.close()
也可以直接将内容写入文件
file=urllib.request.urlretrieve(url="http://www.baidu.com",filename="D:/test.html")
urlretrieve()会产生缓存可以用urlcleanup()来清除
urllib.request.urlcleanup()
编码与解码
使用x=urllib.request.quote()
进行编码,例如x=urllib.request.quote("http://www.baidu.com")
使用urllib.request.unquote()
进行解码
模拟浏览器
- 通过build_opener()方法
url="http://www.baidu.com"
headers=("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36")
opener=urllib.request.build_opener()
opener.add_handlers=[headers]
data=opener.open(url).read()
- 通过add_header()方法
url="http://www.baidu.com"
req=urllib.request.Request(url)
req.add_header("user-agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36")
data=urllib.request.urlopen(url).read()
超时设置
可以通过urlopen(url,timeout=1)
方法设置,单位为秒