Python3爬虫获取

2018-06-17 23:56:17来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

  “AttributeError: 'module' object has no attribute 'urlopen'”
 
原因是Python3里的urllib模块已经发生改变,此处的urllib都应该改成urllib.request。
 
修改之后再运行,发现又有如下提示:
 
    TypeError: can't use a string pattern on a bytes-like object
 
原因为Python3 findall数据类型用bytes类型,因此在正则表达式前应添加html = html.decode('utf-8')。
 
修改完后运行,成功~,不过由于网站原因,仍只能保存最近的24张背景图。最终代码如下:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# -*- author:arron ni-*-

# python3抓取bing主页所有背景图片

import urllib,re,sys,os

def get_bing_backphoto():

    if (os.path.exists('photos')== False):

        os.mkdir('photos')

    for i in range(0,30):

        url = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx='+str(i)+'&n=1&nc=1361089515117&FORM=HYLH1'

        html = urllib.request.urlopen(url).read()

        if html == 'null':

            print( 'open & read bing error!')

            sys.exit(-1)

        html = html.decode('utf-8')

        reg = re.compile('"url":"(.*?)","urlbase"',re.S)

        text = re.findall(reg,html)

        #http://s.cn.bing.net/az/hprichbg/rb/LongJi_ZH-CN8658435963_1366x768.jpg

        for imgurl in text :

            right = imgurl.rindex('/')

            name = imgurl.replace(imgurl[:right+1],'')

            savepath = 'photos/'+ name

            urllib.request.urlretrieve(imgurl, savepath)

            print (name + ' save success!')

get_bing_backphoto()

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:小白学爬虫-设置Selenium+Chrome代理

下一篇:洗礼灵魂,修炼python(79)--全栈项目实战篇(7)—— 多级目录