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()

urllib案例-爬取豆瓣阅读所有的出版社

ps:看来不是每个网址的页面隔一段时间就会修改…这样写的一些爬虫就可以使用好久了…

urllib基础

  1. urlretrieve()

    格式:urlretrieve(网址,本地文件存储地址)

    urlretrieve是urllib库下的request下面的一个方法,所以在使用的时候记得加上request.

    功能:直接下载将网页到本地,但是有些后续请求的内容下载不了。

    import urllib.request
    #urlretrieve(网址,本地文件存储地址) 直接下载网页到本地
    urllib.request.urlretrieve("http://www.baidu.com","G:\\Python_Test\\urllib_test\\daidu.html")
    

urllib基础-urlretrieve函数

  1. urlcleanup()

    清除爬虫产生的缓存。

    urlcleanup是urllib库下的request下面的一个方法,所以在使用的时候记得加上request.

    使用:直接调用,但是看不到实际的输出

    import urllib.request
    urllib.request.urlcleanup()
    
  2. info()

    可以提示当前爬取的相应的情况

    info是urllib库下的request下面的一个方法,所以在使用的时候记得加上request.

    import urllib.request
    #看网页相应的简介信息info()
    file=urllib.request.urlopen("https://read.douban.com/provider/all")
    print(file.info())
    

    urllib基础-info函数

  3. getcode()

    输出当前的状态码(访问成功,访问失败,访问失败的原因等等)(正常是200,失败时500,还有一些其他的,比如301等等,反正处理200,都是失败的)

    import urllib.request
    #返回网页爬取的状态码getcode()
    file=urllib.request.urlopen("https://read.douban.com/provider/all")
    print(file.getcode())
    

    urllib基础-getcode函数

  4. geturl()

    获取当前访问的网页的url

    import urllib.request
    #获取当前访问的网页的url,geturl()
    file=urllib.request.urlopen("https://read.douban.com/provider/all")
    print(file.geturl())
    

urllib基础-geturl函数

超时设置:

由于网路速度或者对方服务器的问题,我们爬取一个网页的时候都需要时间,如果我们访问一个网页长时间未响应,那么我们的系统就会判断网页打开超时。(平常的时候我们打开网页也有这种现象)。

根据不同网站的响应速度,我们对不同网站设置超时时间,比如说反应快的我设置timeout为2秒,反应慢的我设置timeout为100秒(只是举例)。

#超时设置
import urllib.request
for i in range(0,100):
    try:
        file=urllib.request.urlopen("https://me.csdn.net/xxydzyr",timeout=1)
        print(len(file.read().decode("utf-8")))
    except Exception as err:
        print("出现异常"+str(err))

urllib基础-超时设置

猜你喜欢

转载自blog.csdn.net/xxydzyr/article/details/86563879