Python学习之爬虫02-urllib库学习
Python学习之爬虫02-urllib库学习
练习案例:
爬取豆瓣阅读的所有出版社
#出版社爬取
import urllib.request
import re
data=urllib.request.urlopen("https://read.douban.com/provider/all").read().decode("utf-8")
pat='<div class="name">(.*?)</div>'
rst=re.compile(pat).findall(data)
fh=open("G:\\Python_Test\\urllib_test\\chubanshe.txt","w")
for i in range(0,len(rst)):
print(rst[i])
fh.write(rst[i]+"\n")
fh.close()
ps:看来不是每个网址的页面隔一段时间就会修改…这样写的一些爬虫就可以使用好久了…
urllib基础
-
urlretrieve()
格式:urlretrieve(网址,本地文件存储地址)
urlretrieve是urllib库下的request下面的一个方法,所以在使用的时候记得加上
request.
功能:直接下载将网页到本地,但是有些后续请求的内容下载不了。
import urllib.request #urlretrieve(网址,本地文件存储地址) 直接下载网页到本地 urllib.request.urlretrieve("http://www.baidu.com","G:\\Python_Test\\urllib_test\\daidu.html")
-
urlcleanup()
清除爬虫产生的缓存。
urlcleanup是urllib库下的request下面的一个方法,所以在使用的时候记得加上
request.
使用:直接调用,但是看不到实际的输出
import urllib.request urllib.request.urlcleanup()
-
info()
可以提示当前爬取的相应的情况
info是urllib库下的request下面的一个方法,所以在使用的时候记得加上
request.
import urllib.request #看网页相应的简介信息info() file=urllib.request.urlopen("https://read.douban.com/provider/all") print(file.info())
-
getcode()
输出当前的状态码(访问成功,访问失败,访问失败的原因等等)(正常是200,失败时500,还有一些其他的,比如301等等,反正处理200,都是失败的)
import urllib.request #返回网页爬取的状态码getcode() file=urllib.request.urlopen("https://read.douban.com/provider/all") print(file.getcode())
-
geturl()
获取当前访问的网页的url
import urllib.request #获取当前访问的网页的url,geturl() file=urllib.request.urlopen("https://read.douban.com/provider/all") print(file.geturl())
超时设置:
由于网路速度或者对方服务器的问题,我们爬取一个网页的时候都需要时间,如果我们访问一个网页长时间未响应,那么我们的系统就会判断网页打开超时。(平常的时候我们打开网页也有这种现象)。
根据不同网站的响应速度,我们对不同网站设置超时时间,比如说反应快的我设置timeout
为2秒,反应慢的我设置timeout
为100秒(只是举例)。
#超时设置
import urllib.request
for i in range(0,100):
try:
file=urllib.request.urlopen("https://me.****.net/xxydzyr",timeout=1)
print(len(file.read().decode("utf-8")))
except Exception as err:
print("出现异常"+str(err))