使用python爬取豆瓣电影图片(-)

学python没多久,主要想用它来做爬虫,写api建议用node.js,做全站页面渲染用php搞定,做爬虫还得看python:


这里没有用python的一些爬虫框架,先采用python内置模块urllib直接处理页面抓取,然后解析内容然后直接下载图片:


直接抓取豆瓣图片api,解析并下载图片:

# -*- coding: utf-8 -*-
import json
import urllib
import re
def getHtml(url):
     request =url
     response = urllib.urlopen(request)
     return response.read()

def downloadPic(url,start):
    source =getHtml(url)
    s = json.loads(source)
    imgArr = s['subjects']
    index=0
    for i in imgArr:
        #print i['title'],i['url']
        ext=re.findall(r'.*\.(\w+)$',i['cover'])
        if len(ext)>0:
            ext =ext[0]
        else:
            ext='jpg'
        path='./img/douban_%s_%s.%s' % (start,index,ext)
        print path
        f=open(path,'w')
        f.write(getHtml(i['cover']))
        f.close()
        index=index+1

def downMore(num=0):
    for i in range(num):
        p=i*20
        url='http://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='+str(p)
        print 'url is %s' % url
        downloadPic(url,i)


downMore(13)





直接抓取豆瓣电影页面源代码解析并下载图片:


# -*- coding: utf-8 -*-
import urllib
import re
def getHtml(url):
     request =url
     response = urllib.urlopen(request)
     return response.read()
 
def trimempty(n):
    return len(n)>12
url='http://movie.douban.com'
data= getHtml(url)
#print data
#imgs= re.findall(r'<a\s+.*href=\'([^\']*)\'\s+.*>.*<\/a>',data)
imgs= re.findall(r'<img\s+.*src=\"([^\"]*)\"\s+.*>',data)
if len(imgs)>50:
    imgs = imgs[0:50]
else:
    imgs=imgs

imgs = filter(trimempty,imgs)
print imgs
index=0
for i in imgs:
    extArr=re.findall(r'.*\.(\w+)$',i)
    if(len(extArr)>0):
        ext =extArr[0]
    else:
        ext='jpg'
    path ='./img/%s.%s' % (index,ext)
    print path
    f=open(path,'w')
    f.write(getHtml(i))
    f.close()
    index=index+1
    



运行代码前,先到当前目录下新建img文件夹,运行代码大功告成!

小问题是windows下图片显示不正常,linux下完美下载,最后建议小伙伴们不要再windows上跑python了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值