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)方法设置,单位为秒

posted @ 2021-01-23 10:20  一个只会爆零的小菜鸡  阅读(112)  评论(0编辑  收藏  举报