python 抓取lofterart动态页面
来源:互联网 发布:淘宝首页psd模板教程 编辑:程序博客网 时间:2024/06/05 00:56
仅作学习交流只用。
对于动态网页,可以分析其请求数据,模拟POST,只请求目的数据,占用资源较少,在网络带宽有限的情况下比webbrowser有效。
网站:点击打开链接
下载该网站里的图片。
其中图片列表是动态加载的,从中获得图片的ID,请求对应的网址,下载图片。
主模块:
#-*- coding:utf-8 -*-#lofterart爬虫#author:windroid#15/3/5import getPageimport downPicimport reimport timeMAXPAGE=184SPAGE=19PATH='D:\\lofter\\'print PATHprint SPAGEprint 'downloading...'for downpage in range(SPAGE,MAXPAGE+1): pagelist=getPage.getPage(downpage) for v in pagelist: #time.sleep(1)#404 downPic.downPic(v[10:],PATH) #print v[10:] open('set.ini','w').write(str(downpage)) print 'download page: '+str(downpage)+' over.'print 'download is over.'
getPage
获得图片列表
#-*- coding: utf-8 -*-import urllib2import gzipimport StringIOimport redef getPage(page): '加载页面,返回list,数据格式:productId=23123720' BATCHID=196800-page*13 #if page==1: # page=0 # PARAM2=32 #elif page<=50: # PARAM2=16 #else: # PARAM2=8 PARAM2=8#c0-param0 1 框画 2 明信片 postdata='''callCount=1scriptSessionId=${scriptSessionId}187httpSessionId=c0-scriptName=SaleBeanc0-methodName=getSaleRecommendItemListc0-id=0c0-param0=number:2c0-param1=number:-1c0-param2=number:%dc0-param3=number:%dbatchId=%d'''%(PARAM2, PARAM2*page, BATCHID) url='http://www.lofter.com/dwr/call/plaincall/SaleBean.getSaleRecommendItemList.dwr' myheaders={ 'Host':'www.lofter.com', 'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0', 'Accept-Encoding':'gzip, deflate', 'Content-Type':'text/plain; charset=UTF-8', 'Referer':'http://www.lofter.com/art/print', } opener=urllib2.build_opener() req=urllib2.Request(url,data=postdata,headers=myheaders) try: f=opener.open(req) except BaseException, err: print 'getPage: '+page+' failed.'+'Error: '+str(err) return {} rawdata=StringIO.StringIO(f.read()) resdata=gzip.GzipFile(fileobj=rawdata).read() reslist=re.findall('productId=\d*',resdata) #print reslist return reslist#getPage(1)#184
downPic
下载图片
# -*- coding: utf-8 -*-import urllibimport urllib2import cookielibimport reheaders={'User-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:35.0) Gecko/20100101 Firefox/35.0'}opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))def downPic(picid,path): req=urllib2.Request('http://www.lofter.com/art/product-'+picid,headers=headers) try: content=opener.open(req) except BaseException,err: print 'download: '+picid+'.jpg failed. Error: '+str(err) return 1 else: #"showimgtag" result=re.findall('<img src="(.*?)" class="card showimgtag">',content.read()) x=1 for item in result: urllib.urlretrieve(item,path+picid+'-'+str(x)+'.jpg') print 'download: '+picid+'-'+str(x)+'.jpg over.' x+=1 return 0
0 0
- python 抓取lofterart动态页面
- 如何用Python抓取动态页面信息
- python使用spynner抓取动态页面数据
- Python动态页面抓取超级指南
- 抓取动态页面
- 动态页面抓取
- python 页面信息抓取
- Python抓取页面
- Python 抓取页面
- python抓取动态数据
- selenium动态抓取页面元素
- scrapy抓取动态页面方法
- Scrapy抓取Ajax动态页面
- PyThon 抓取页面(入门)
- python抓取页面数据实例
- python 爬虫抓取页面图片
- python抓取简单页面信息
- python-抓取页面的图片
- Java链表实现堆栈
- 如何在Web项目中使用Makefile
- isspace()
- Matlab Intro - Image Structure
- width:auto和width:100%的区别
- python 抓取lofterart动态页面
- C++中的locale设置
- UVa 524 - Prime Ring Problem(回溯)
- C#中listview的image添加问题和item双击事件
- Python设计模式——责任链模式
- GreenDao分析概括
- C++游戏之GDI的初步认识与使用(二)
- 认识处理器-寄存器使用(待改)
- Java网络编程