zoukankan      html  css  js  c++  java
  • urllib

    urllib.request.urlretrieve()直接爬取到本地

    urlclear()清除urlretrieve()产生的缓存

    info()当前环境

    getcode()状态码 200是正常爬取,403不能爬取

    geturl()获取网址

    timeout超时设置 例如:

       file=urllib.request.urlopen("http://www.baidu.com",timeout=1)

    出现异常调试:

    for i in range(0,100):
        try:
            file=urllib.request.urlopen("http://yum.iqianyue.com",timeout=1)
            data=file.read()
            print(len(data))
        except Exception as e:
            print("出现异常:"+str(e))

    解决中文问题

    import urllib.request
    keywd="python"
    url="http://www.baidu.com/s?wd="+keywd
    req=urllib.request.Request(url)
    data=urllib.request.urlopen(req).read()
    fh=open("C:/Users/***/Desktop/***/2.html","wb")
    fh.write(data)
    fh.close()
    解决中文问题
    import urllib.request
    keywd="爬虫"
    keywd=urllib.request.quote(keywd)
    url="http://www.baidu.com/s?wd="+keywd
    req=urllib.request.Request(url)
    data=urllib.request.urlopen(req).read()
    fh=open("C:/Users/吕秋玉/Desktop/文献阅读/3.html","wb")
    fh.write(data)
    fh.close()
    构造网址,把网址改为请求。

    处理爬虫异常
    URLError
    1、连不上服务器
    2、远程url不存在
    3、本地没有网络
    4、促发对应的HTTPError子类

    处理异常:

    import urllib.error
    import urllib.request
    try:
        urllib.request.urlopen("http://blog.csdn.net")
    except urllib.error.HTTPrror as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e,reason)

    爬虫浏览器伪装技术:

    import urllib.request
    url="http://news.sina.com.cn/"
    headers=("User-Agent"," Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299")
    opener=urllib.request.build_opener()
    opener.addheaders=[headers]
    data=opener.open(url).read()
    data.decode("utf-8","ignore")
    fh=open("C:/Users/***/Desktop/***/5.html","wb")
    fh.write(data)
    fh.close()

    新闻爬虫:

    import urllib.request
    import re
    data=urllib.request.urlopen("http://news.sina.com.cn/").read()
    data2=data.decode("utf-8","ignore")
    pat='herf="(http://news.sina.com.cn/.*?)"'
    allurl=re.compile(pat).findall(data2)
    for i in range(0,len(allurl)):
        try:
            print(""+str(i)+"次爬取")
            thisurl=allurl[i]
            file="C:/Users/***/Desktop/***/sinanews/"+str(i)+".html"
            urllib.request.urlretrieve(thisurl,file)
            print("----成功----")
        except urllib.error.URLError as e:
            if hasattr(e,"code"):
                print(e,code)
            if hasattr(e,"reason"):
                print(e,reason)

    作业:将新浪首页(http://news.sina.com.cn/)所有数据都爬到本地。

    import urllib.request
    import re
    url="http://blog.csdn.net/"
    headers=("User-Agent"," Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299")
    opener=urllib.request.build_opener()
    opener.addheaders=[headers]
    urllib.request.install_opener(opener)
    data=opener.open(url).read()
    data=data.decode("utf-8","ignore")
    pat='<a strategy="recommend" href="(.*?)"'
    result=re.compile(pat).findall(data)
    for i in range(0,len(result)):
        file="C:/Users/***/Desktop/****/6"+str(i)+".html"
        urllib.request.urlretrieve(result[i],filename=file)
        print(""+str(i+1)+"次爬取成功")

    爬虫防屏蔽手段之代理服务器 网站西刺

    import urllib.request
    def use_proxy(url,proxy_addr):
        proxy=urllib.request.ProxyHandler({"http":proxy_addr})
        opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
        urllib.request.install_opener(opener)
        data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
        return data
    proxy_addr="49.67.53.143:808"
    url="http://www.baidu.com"
    data=use_proxy(url,proxy_addr)
    print(len(data))

    图片爬虫如下:

    import urllib.request
    import re
    keywd="连衣裙"
    key=urllib.request.quote(keywd)
    headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299")
    opener=urllib.request.build_opener()
    opener.addheaders=[headers]
    urllib.request.install_opener(opener)
    for i in range(1,50):
        url="https://s.taobao.com/list?spm="+key+"&cat=50008898&bcoffset=12&s=str(i*60)"
        data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
        pat='pic_url":"//(.*?)"'
        imagelist=re.compile(pat).findall(data)
        for j in range(0,len(imagelist)):
            thisimage=imagelist[j]
            thisimageurl="http://"+thisimage
            file="C:/Users/吕秋玉/Desktop/文献阅读/image/"+str(i)+str(j)+".jpg"
            urllib.request.urlretrieve(thisimageurl,filename=file)
  • 相关阅读:
    超能英雄第一至四季/全集Heroes迅雷下载
    吸血鬼猎人巴菲第一至八季/全集Buffy迅雷下载
    明星伙伴第一至八季/全集Entourage迅雷下载
    实习医生风云第一至九季/全集Scrubs迅雷下载
    阿里云linux图形界面(centos6)
    linux下mysql的root密码忘记解决方
    wdcp支持两种安装方式
    如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
    丑女贝蒂第一至四季/全集Ugly Betty迅雷下载
    云服务器 ECS Linux 系统安装图形化桌面 (centos7 ubuntu14)
  • 原文地址:https://www.cnblogs.com/qiuyuyu/p/9078928.html
Copyright © 2011-2022 走看看